Syntax analyser
By Jack Stovell · published 2026-09-24
A syntax analyser measures how you build sentences: length, variation, complexity, where the point lands, and the marks you use to interrupt yourself. ScriptGrain's syntax group holds 7 of its 45 attributes. Every value a profile stores is the extraction model's reading; code counts five of the seven in the free tools, four when it scores a draft.
Analyse your syntax attributes free
Your free voice profile measures every syntax attribute among all 45, from a sample of your own writing. No card needed.
Try the six-signal check first
At a glance
- Attributes: 7 of 45 (ScriptGrain voice profile)
- Counted in code: 5 (when a draft is scored, or in the free tools) (ScriptGrain voice-match engine and free tools)
- Judged by a model: 2 (ScriptGrain extraction and voice-match engine)
- Kept as word lists: 0 (ScriptGrain extraction)
- Move the voice match score: 6 of 7 (ScriptGrain voice-match engine (published method))
What the syntax group measures
The syntax group looks at how a sentence gets built, from its length to the punctuation that breaks it apart. Seven attributes: code can count five of them, a model judges the other two, and six of the seven move your voice match score.
Average sentence length is the average number of words per sentence. Code counts it when a draft is scored, and it carries the heaviest voice-match weight in the group: 2.
Sentence length variance tracks how much your sentence lengths swing between short and long. The app calls it unitless (higher means more variation); when a draft is scored, code measures the variance of its sentence lengths in words squared, at a weight of 1.5. Its cousin burstiness divides the standard deviation by the average, and the sentence length variance glossary entry has the definition.
Sentence complexity asks whether your sentences lean simple, compound, complex, or a genuine mix. A model judges this one from the sample, and it moves the score at weight 1.
Clause ordering is about where the point sits. Front-loaded, build-to-point, or mixed. Also judged, also weight 1. A writer who states the conclusion first reads differently from one who builds toward it, even at identical sentence lengths.
Parenthetical rate is asides per 300 words. The app's definition says brackets or dashes, but every counter in the code counts brackets only. Code counts it when a draft is scored, at weight 1.
Dash frequency is dashes per 1,000 words, and it's the exception. The free analyser counts dashes; draft scoring ignores them, so this one never moves the voice match score. ScriptGrain's own drafts contain no em or en dashes, whatever the profile says.
Semicolon frequency is semicolons per 1,000 words. Code counts it when a draft is scored, at weight 1.5, level with sentence length variance as the group's second-heaviest.
So the split: code counts 5, a model judges 2, and none is a word list. Three other groups in the full set of 45 attributes include word lists; syntax has none. The syntax layer reference has the corpus percentiles, and the writing voice attributes reference lists all 45 by layer.
How syntax features are scored
Syntax features get scored two different ways, and which way depends on whether the feature is countable or a judgement. When a draft is scored, code counts four of them: average sentence length, sentence length variance, parenthetical rate and semicolon frequency. It counts words and marks in the draft and does the arithmetic. Dash frequency is counted only in the free analyser and the AI cliché checker; draft scoring ignores dashes.
Sentence complexity and clause ordering are different. There's no clean rule for "this sentence is compound" the way there's a rule for "this sentence has 14 words." So when a draft is scored, Claude Haiku reads it and names a label, and code compares that with the profile's label: an exact match scores 1, "mixed" on either side 0.7, a wrong label 0.15.
Here's the bit that catches people out: all seven values stored in your profile, counted or judged, are the extraction model's reading of your samples (Claude Sonnet 5, one pass per sample, then a synthesis). Code counts features only in a draft it is scoring and in the free tools; it never writes a profile value.
Six of the seven attributes move your voice match score: everything except dash frequency. Here is how that score works. When ScriptGrain compares a piece of text against your profile, code counts sentence, punctuation, pronoun, article and word-length features directly. Claude Haiku judges formality, humour, structure and rhythm. Then a weighted comparison runs through a fixed calibration to produce a number from 0 to 1. The app labels that number: 90%+ is Excellent, 75 to 89% is Good, 60 to 74% is Fair, under 60% is Low. Across all 45 attributes, 28 can move that score; the voice match method page has the detail.
How to analyse the syntax of your own writing
You can analyse your own syntax by hand with a bit of patience and a highlighter. It's slow, but it's not complicated.
- Take a sample of your writing, at least a few hundred words, and count the words in every sentence. Add them up, divide by the number of sentences. That's your average sentence length.
- Look at the spread. Are most sentences clustered around that average, or do you swing between five-word fragments and forty-word monsters? The wider the swing, the higher your variance.
- Read each sentence and ask whether it's simple (one clause), compound (two clauses joined), complex (a main clause plus subordinate ones), or genuinely mixed across the piece.
- Check where your point lands. Do you state the conclusion up front and explain after, or build through the reasoning and land the point at the end?
- Count your brackets, dashes and semicolons separately, then work out a rate (brackets per 300 words, dashes and semicolons per 1,000) so you can compare pieces fairly.
That's the manual version, and it works, but it's tedious past a few hundred words. ScriptGrain's free voice profile reads all seven from a writing sample, among its 45 attributes.
How to make AI writing match your syntax
You make AI writing match your syntax by giving the model your actual sentence patterns to copy, not a vague instruction to "sound natural." Telling a chatbot to write "in your voice" without data is guesswork; it falls back on its own default sentence shape.
- Pull a sample of your own writing across a few pieces; ScriptGrain's app suggests 3,000 words or more for a profile.
- Identify your dominant patterns: your typical sentence length, how much it varies, whether you build to a point or lead with it, and how often you reach for brackets or a semicolon.
- Feed those specifics to the AI tool as concrete instructions rather than a general vibe. For example, "average 14 words per sentence, high variance, build-to-point, occasional semicolons" beats "write casually."
- Check a generated draft against the pattern and adjust the instruction where it drifts, particularly on sentence length variance.
A ScriptGrain voice profile does that back-and-forth once. It carries the syntax group (and the other 7 groups) into every draft ScriptGrain writes for you as hard constraints, with one exception: its drafts never contain em or en dashes, whatever your dash frequency. It also reaches other tools: connect ChatGPT, Claude, or any MCP-compatible tool, and the profile's attributes, all seven syntax readings included, travel through the API and the MCP server to the model writing on the other end. `GET /v1/profiles/{id}` and the MCP tool `get_profile` both return all 45 attributes as JSON, on every plan, including free.
Attributes in this group
- Average sentence length: The average number of words in a sentence.
- Sentence length variance: How much sentence length swings between short and long (unitless; higher means more variation).
- Sentence complexity: Whether sentences lean simple, compound, complex, or a mix.
- Clause ordering: Whether the point comes first, is built up to, or varies.
- Parenthetical rate: How often asides in brackets or dashes appear.
- Dash frequency: How often dashes are used.
- Semicolon frequency: How often semicolons are used.
Questions
What is a syntax analyser?
A syntax analyser is a tool that measures how sentences are built: their length, how much that length varies, their complexity, where the main point sits, and the punctuation marks used inside them. ScriptGrain covers 7 such attributes in its 45-attribute voice profile. The stored values are a model's reading; code can count 5 of them, and a model judges the other 2.
How do I analyse sentence structure in my own writing?
Count the words per sentence across a sample to get an average, then check how widely those lengths swing from sentence to sentence. Read each one for whether it's simple, compound, complex, or mixed, note where the main point lands, and tally brackets, dashes and semicolons. It's doable by hand on a short sample; ScriptGrain's free profile does the same reading automatically from a longer one.
What counts as syntactic analysis of writing?
Syntactic analysis of writing looks specifically at sentence construction rather than word choice or tone. That means average sentence length, how much sentence length varies, sentence complexity (simple, compound, complex, or mixed), clause ordering, and the frequency of brackets, dashes, and semicolons. ScriptGrain groups these seven measures under "Syntactic" and treats six of them as inputs to its voice match score.
What is a syntax score?
There isn't a single syntax score on its own; instead there are 7 separate syntax attributes, each with its own value and, for 6 of the 7, its own weight toward the overall voice match score. That match score runs from 0 to 1, calibrated and labelled Excellent, Good, Fair, or Low, and pulls syntax features together with punctuation, pronoun, article, and word-length counts alongside model-judged formality, humour, structure and rhythm.
How can I make AI match my sentence structure?
Give the AI concrete sentence-level data rather than a general style request: your typical length, how much it varies, whether you build to a point or open with it, and how often you use semicolons or brackets. That's slow to do by hand every time. A ScriptGrain voice profile stores these readings once, and ChatGPT, Claude and other tools can read them through the API and MCP server, so each draft can start from your actual patterns.