📄 test.g
字号:
/* This tests a simple DLG-based scanner plus (...)? predicates */
<<
typedef ANTLRCommonToken ANTLRToken;
#include "DLGLexer.h"
#include "PBlackBox.h"
int main()
{
ParserBlackBox<DLGLexer, Expr, ANTLRToken> p(stdin);
p.parser()->begin();
return 0;
}
void doit(Expr *p)
{
printf("LT(1) is %s\n", ((ANTLRToken *)p->LT(1))->getText());
printf("LT(2) is %s\n", ((ANTLRToken *)p->LT(2))->getText());
printf("LT(3) is %s\n", ((ANTLRToken *)p->LT(3))->getText());
printf("LT(4) is %s\n", ((ANTLRToken *)p->LT(4))->getText());
printf("LT(5) is %s\n", ((ANTLRToken *)p->LT(5))->getText());
printf("LT(6) is %s\n", ((ANTLRToken *)p->LT(6))->getText());
printf("LT(7) is %s\n", ((ANTLRToken *)p->LT(7))->getText());
printf("LT(8) is %s\n", ((ANTLRToken *)p->LT(8))->getText());
printf("LT(9) is %s\n", ((ANTLRToken *)p->LT(9))->getText());
printf("LT(10) is %s\n", ((ANTLRToken *)p->LT(10))->getText());
printf("LT(11) is %s\n", ((ANTLRToken *)p->LT(11))->getText());
}
>>
#token "[\ \t\n]+" <<skip();>>
#token Eof "@"
class Expr { /* Define a grammar class */
begin
: <</*doit(this);*/>>
e
;
e : ( list "=" )? list "=" list Eof
<<printf("list = list\n");>>
| list Eof
<<printf("list\n");>>
;
list: "\(" (IDENTIFIER|NUMBER)* "\)"
;
predict
: ( "\(" (IDENTIFIER|NUMBER)* "\)" "=")?
| "\(" "\)" "="
;
/*
Here's another example...
#token INT "int"
#token SEMI ";"
#token STAR "\*"
#token ASSIGN "="
begin: "extern" "char" declarator ";"
;
e : (decl)?
| expr
;
expr: IDENTIFIER "=" NUMBER
;
decl: "int" declarator ";"
;
declarator
: ( "\*" )? "\*" declarator
| IDENTIFIER
;
*/
}
#token IDENTIFIER "[a-z]+"
#token NUMBER "[0-9]+"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -