⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.g

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 G
字号:
/* This is test.g which tests multiple scanners/parsers; DLG-based scanner; * also, we test multiple lexical classes. */<<#include "Lexer.h"typedef ANTLRCommonToken ANTLRToken;#include "PBlackBox.h"int main(){	ParserBlackBox<Lexer, Include, ANTLRToken> p(stdin);	p.parser()->input();	return 0;}>>#token "[\ \t\n]+"	<<skip();>>#lexclass STARTclass 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] = '\0';	return &s[1];}>>input	:	( cmd | include )* "@"	;cmd	:	"print"		(	NUMBER		<<printf("%s\n", $1->getText());>>		|	STRING		<<printf("%s\n", $1->getText());>>		)	;include	:	"#data" STRING		<<{		FILE *f;		f = fopen(stripquotes($2->getText()), "r");		if ( f==NULL ) {fprintf(stderr, "can't open %s\n", $2->getText()+1);}		else {			ANTLRTokenPtr aToken = new ANTLRToken;			DLGFileInput in(f);			Lexer scan(&in);			scan.setToken(mytoken(aToken));			scan.mode(Lexer::DATA);			ANTLRTokenBuffer pipe(&scan);			Include parser(&pipe);			parser.init();			parser.data();		}		}>>	;#lexclass DATA#token "[\ \t\n]+"	<<skip();>>data:	"0x[0-9]+" ":" "0x[0-9]+"		<<printf("data %s\n", $1->getText());>>	;}#lexclass START#token STRING	"\" [a-zA-Z0-9_.,\ \t]+ \""#token NUMBER	"[0-9]+"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -