@@ -62,7 +62,7 @@ module.exports = grammar({
6262 // Explicit special cases: these are plaintext, not errors.
6363 _word_common : ( ) => choice (
6464 // NOT tag: isolated "*".
65- / \* [ \n \t ] / ,
65+ '*' ,
6666 // NOT optionlink: '
6767 "'" ,
6868 // NOT optionlink: 'x
@@ -208,26 +208,28 @@ module.exports = grammar({
208208 optionlink : ( $ ) => _word ( $ , / [ a - z ] [ a - z ] + / , "'" , "'" ) ,
209209 // Link to tag: |foo|
210210 taglink : ( $ ) => _word ( $ , choice (
211- token . immediate ( / [ ^ | \n \t ] + / ) ,
212- // Special cases: |(| |{| …
213- token . immediate ( '{' ) ,
214- token . immediate ( '}' ) ,
215- token . immediate ( '(' ) ,
216- token . immediate ( ')' ) ,
217- token . immediate ( '`' ) ,
218- ) , '|' , '|' ) ,
211+ / [ ^ | \n \t ] + / ,
212+ // Special cases: |(| |{| …
213+ '{' ,
214+ '}' ,
215+ '(' ,
216+ ')' ,
217+ '`' ,
218+ ) ,
219+ '|' , '|' ) ,
219220 // Inline code (may contain whitespace!): `foo bar`
220221 codespan : ( $ ) => _word ( $ , / [ ^ ` ` \n ] + / , '`' , '`' ) ,
221- // Argument: {arg}
222- argument : ( $ ) => _word ( $ , / [ ^ { } \n \t ] [ ^ { } \n \t ] * / , '{' , '}' ) ,
222+ // Argument: {arg} (no whitespace allowed)
223+ argument : ( $ ) => _word ( $ , / [ ^ } \n \t ] + / , '{' , '}' ) ,
223224 } ,
224225} ) ;
225226
226227// Word delimited by special chars.
227228// `rule` can be a rule function or regex. It is aliased to "word" because they are
228229// semantically the same: atoms of captured plain text.
229230function _word ( $ , rule , c1 , c2 , fname ) {
230- rule = rule . test !== undefined ? token . immediate ( rule ) : rule
231+ // rule = rule.test ? token.immediate(rule) : rule
232+ // rule = token.immediate(rule)
231233 fname = fname ?? 'text' ;
232- return seq ( c1 , field ( fname , alias ( rule , $ . word ) ) , token . immediate ( c2 ) ) ;
234+ return seq ( c1 , field ( fname , alias ( token . immediate ( prec ( 1 , rule ) ) , $ . word ) ) , token . immediate ( c2 ) ) ;
233235}
0 commit comments