📄 test.g
字号:
<<
#include ATOKPTR_H // define smart pointers
class ANTLRToken : public ANTLRCommonToken {
public:
int muck;
public:
ANTLRToken(ANTLRTokenType t, ANTLRChar *s) : ANTLRCommonToken(t,s)
{ muck = atoi(s); }
ANTLRToken() {;}
ANTLRChar *getText() const { return ""; }
void setText(const ANTLRChar *s) { ; }
virtual ANTLRAbstractToken *makeToken(ANTLRTokenType t, char *s, int line)
{
ANTLRToken *tk = new ANTLRToken(t,s);
tk->muck = atoi(s);
return tk;
}
};
#include "DLGLexer.h"
#include "PBlackBox.h"
int main()
{
ParserBlackBox<DLGLexer, Expr, ANTLRToken> p(stdin);
p.parser()->calc();
return 0;
}
>>
#token "[\ \t\n]+" <<skip();>>
class Expr {
calc: <<int r;>>
e>[r]
<<printf("result is %d\n", r);>>
;
e > [int r]
: <<int b;>>
e2>[$r] ( "\+" e2>[b] <<$r+=b;>> )*
;
e2 > [int r]
: NUMBER <<$r=mytoken($1)->muck;>>
( "\*" NUMBER <<$r*=mytoken($2)->muck;>> )*
;
}
#token NUMBER "[0-9]+"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -