test.g
来自「本工具提供一个词法分析器和语法分析器的集成开发环境」· G 代码 · 共 56 行
G
56 行
<<#include ATOKPTR_H // define smart pointersclass 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 + =
减小字号Ctrl + -
显示快捷键?