- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
test.g
资源名称:pccts133.zip [点击查看]
上传用户:itx_2006
上传日期:2007-01-06
资源大小:493k
文件大小:1k
源码类别:
编译器/解释器
开发平台:
Others
- /* This is test.g which tests multiple scanners/parsers; DLG-based scanner */
- <<
- #include "Lexer.h"
- typedef ANTLRCommonToken ANTLRToken;
- int main()
- {
- ANTLRTokenPtr aToken = new ANTLRToken;
- DLGFileInput in(stdin);
- Lexer scan(&in);
- scan.setToken(mytoken(aToken));
- ANTLRTokenBuffer pipe(&scan);
- Include parser(&pipe);
- parser.init();
- parser.input();
- return 0;
- }
- >>
- #token "[ tn]+" <<skip();>>
- #token Eof "@"
- class Include {
- <<
- /* this is automatically defined to be a member function of Include::
- * since it is within the "class {...}" boundaries.
- */
- private:
- char *stripquotes(ANTLRChar *s)
- {
- s[strlen(s)-1] = '';
- return &s[1];
- }
- >>
- input
- : ( cmd | include )* Eof
- ;
- cmd : "print"
- ( NUMBER <<printf("%sn", $1->getText());>>
- | STRING <<printf("%sn", $1->getText());>>
- )
- ;
- include
- : "#include" STRING
- <<{
- FILE *f;
- f = fopen(stripquotes($2->getText()), "r");
- if ( f==NULL ) {fprintf(stderr, "can't open %sn", $2->getText()+1);}
- else {
- ANTLRTokenPtr aToken = new ANTLRToken;
- DLGFileInput in(f);
- Lexer scan(&in);
- scan.setToken(mytoken(aToken));
- ANTLRTokenBuffer pipe(&scan);
- Include parser(&pipe);
- parser.init();
- parser.input();
- }
- }>>
- ;
- }
- #token STRING "" [a-zA-Z0-9_., t]+ ""
- #token NUMBER "[0-9]+"