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

📄 test.g

📁 SRI international 发布的OAA框架软件
💻 G
字号:
/* 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 "[\ \t\n]+"	<<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] = '\0';
	return &s[1];
}
>>

input
	:	( cmd | include )* Eof
	;

cmd	:	"print"
		(	NUMBER		<<printf("%s\n", $1->getText());>>
		|	STRING		<<printf("%s\n", $1->getText());>>
		)
	;

include
	:	"#include" 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));
			ANTLRTokenBuffer pipe(&scan);
			Include parser(&pipe);
			parser.init();
			parser.input();
		}
		}>>
	;

}

#token STRING	"\" [a-zA-Z0-9_.,\ \t]+ \""
#token NUMBER	"[0-9]+"

⌨️ 快捷键说明

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