Add a test for a macro implementation using custom lex function
This commit is contained in:
1 parent
2ebdeaa995
commit
0aaa44faf4
5 files changed
+299
No files matched your search
@@ -0,0 +1,31 @@
|
||||
<<
|
||||
import test_macros;
|
||||
>>
|
||||
|
||||
ptype int;
|
||||
|
||||
lex_fn mylexfn;
|
||||
|
||||
drop /\s+/;
|
||||
token lbrace /\{/;
|
||||
token rbrace /\}/;
|
||||
token plus /\+/;
|
||||
token macro;
|
||||
token macroname /@[a-zA-Z_]\w*/;
|
||||
token num /\d+/ <<
|
||||
int n = 0;
|
||||
foreach (c; match)
|
||||
{
|
||||
n *= 10;
|
||||
n += (c - '0');
|
||||
}
|
||||
$$ = n;
|
||||
>>
|
||||
|
||||
Start -> Statements;
|
||||
Statements -> ;
|
||||
Statements -> Statement Statements;
|
||||
Statement -> Add;
|
||||
Statement -> MacroStart;
|
||||
Add -> num plus num << $$ = $1 + $3; record($$); >>
|
||||
MacroStart -> macro macroname lbrace;
|
||||
Reference in new issue
Block a user