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

📄 test.g

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 G
字号:
/* C++ interface test of Parser Exception Handling * * Given input: * *		if a+ then a=b+b; * * the program should respond with * *		invalid conditional in 'if' statement *		found assignment to a */<<#include <stream.h>#include "DLGLexer.h"#include "PBlackBox.h"typedef ANTLRCommonToken ANTLRToken;int main(){	ParserBlackBox<DLGLexer, PEHTest, ANTLRToken> p(stdin);	int retsignal;	p.parser()->rule(&retsignal);	return 0;}>>/*Uncommenting this will make ANTLR think you put these handlers at theend of each rule:exception	catch MismatchedToken	: <<printf("dflt:MismatchedToken\n");>>	default : <<printf("dflt:dflt\n");>>*/#token "[\ \t]+"	<<skip();>>#token "\n"			<<skip(); newline();>>#token THEN	"then"#tokclass DIE { "@" "if" ID "else" }class PEHTest {rule:	( stat )+	;stat:	"if" t:expr THEN stat { "else" stat }	|	id:ID "=" expr ";"		<<printf("found assignment to %s\n", $id->getText());>>	;  	exception[t]		default	:			<<			printf("invalid conditional in 'if' statement\n");			consumeUntilToken(THEN);            suppressSignal;			>>  	exception		catch MismatchedToken	:		catch NoViableAlt		:		catch NoSemViableAlt	:			<<			printf("stat:caught predefined signal\n");			consumeUntil(DIE_set);            suppressSignal;			>>expr:	expr1 ("\+" expr1)*	;expr1	:	expr2 ("\*" expr2)*	;expr2:	ID	;}#token ID "[a-z]+"

⌨️ 快捷键说明

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