Skip to content

Commit 451a16e

Browse files
committed
Merge: Prefix grammar
Update of the grammar to support the enhancement of literal strings and chars via prefixes (see issue #1734) Pull-Request: #1851 Reviewed-by: Jean Privat <jean@pryen.org>
2 parents ae92503 + 6275254 commit 451a16e

File tree

3 files changed

+1533
-1038
lines changed

3 files changed

+1533
-1038
lines changed

lib/markdown/markdown.nit

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ class MarkdownProcessor
417417
end
418418
else if c == '_' then
419419
if c1 == '_' then
420-
if c0 != ' ' or c2 != ' 'then
420+
if c0 != ' ' or c2 != ' ' then
421421
return new TokenStrongUnderscore(loc, pos, c)
422422
else
423423
return new TokenEmUnderscore(loc, pos, c)

src/parser/nit.sablecc3xx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ extern_code_char
9191
;
9292
extern_code_body = extern_code_char*;
9393

94+
id = lowercase letter*;
95+
9496
/*****************************************************************************/
9597
States
9698
/*****************************************************************************/
@@ -203,16 +205,16 @@ at='@';
203205
semi=';';
204206

205207
classid = uppercase letter*;
206-
id = lowercase letter*;
208+
id = id;
207209
attrid = '_' lowercase letter*;
208210

209211
integer = (number | hex_number | bin_number | oct_number) (('u' prec) | ('i' prec) |);
210212
float = digit* '.' digit+ | (digit+ | digit* '.' digit+) ('E'|'e') ('+'|'-'|) digit+;
211-
string = '"' str_body '"' | '"' '"' '"' long_str_body lsend1 | ''' ''' ''' long_sstr_body ''' ''' ''';
212-
start_string = '"' str_body '{' | '"' '"' '"' long_str_body lsend2;
213+
string = id? '"' str_body '"' id? | id? '"' '"' '"' long_str_body lsend1 | id? ''' ''' ''' long_sstr_body ''' ''' ''' id?;
214+
start_string = id? '"' str_body '{' | id? '"' '"' '"' long_str_body lsend2;
213215
mid_string = '}' str_body '{' | '}' '}' '}' long_str_body lsend2;
214-
end_string = '}' str_body '"' | '}' '}' '}' long_str_body lsend1;
215-
char = (''' [[any - '''] - '\'] ''') | (''' '\' any ''');
216+
end_string = '}' str_body '"' id? | '}' '}' '}' long_str_body lsend1 id? ;
217+
char = id? ((''' [[any - '''] - '\'] ''') | (''' '\' any ''')) id?;
216218
bad_string = ('"'|'}') str_body | '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
217219
bad_char = ''' '\'? any;
218220

0 commit comments

Comments
 (0)