PARSER_BEGIN(Eg1) /** An Arithmetic Grammar. */ public class Eg1 { /** Main entry point. */ public static void main(String args[]) { System.out.println("Reading from standard input..."); Eg1 t = new Eg1(System.in); try { SimpleNode n = t.Start(); n.dump(""); System.out.println("Thank you."); } catch (Exception e) { System.out.println("Oops."); System.out.println(e.getMessage()); e.printStackTrace(); } } } PARSER_END(Eg1) SKIP : { " " | "\t" | "\n" | "\r" //忽略注释符//开头的行和/*注释的 | <"//" (~["\n","\r"])* ("\n"|"\r"|"\r\n")> | <"/*" (~["*"])* "*" (~["/"] (~["*"])* "*")* "/"> } TOKEN : /* LITERALS */ { < INTEGER_LITERAL: <DECIMAL_LITERAL> (["l","L"])? | <HEX_LITERAL> (["l","L"])? | <OCTAL_LITERAL> (["l","L"])? > | //浮点TOKEN < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* > | //十六进制TOKEN < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ > | //十进制TOKEN < #OCTAL_LITERAL: "0" (["0"-"7"])* > } TOKEN : /* IDENTIFIERS */ { < IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>)* > | < #LETTER: ["_","a"-"z","A"-"Z"] > | < #DIGIT: ["0"-"9"] > } /** Main production. */ SimpleNode Start() : {} { Expression() ";" //jjthis返回是一个simplenode类型的树操作 { return jjtThis; } } /** An Expression. */ void Expression() : {} { AdditiveExpression() } /** An Additive Expression. */ void AdditiveExpression() : {} { MultiplicativeExpression() ( ( "+" | "-" ) MultiplicativeExpression() )* } /** A Multiplicative Expression. */ void MultiplicativeExpression() : {} { //匹配类似(IDENTIFIER|INTEGER_LITERAL)*( ( "*" | "/" | "%" ) (IDENTIFIER|INTEGER_LITERAL)* UnaryExpression() ( ( "*" | "/" | "%" ) UnaryExpression() )* } /** 返回TOKEN描述 */ void UnaryExpression() : {} { "(" Expression() ")" | Identifier() | Integer() } /** An Identifier. */ void Identifier() : {} { <IDENTIFIER> } /** An Integer. */ void Integer() : {} { <INTEGER_LITERAL> }
相关推荐
- 当运行`jjtree minijava.jjt`时,JJTree会生成一系列的Java源文件,包括一个新的`.jj`文件(在这个例子中是`minijava.jj`),这个文件包含了JJTree处理后的语法规则,以及表示AST节点的类。 3. **生成的Java文件...
JavaCC-4.0和JavaCC-5.0是该工具的两个不同版本。版本号的提升通常意味着新版本包含了一些改进、增强的功能和可能的bug修复。具体来说: - JavaCC-4.0:这是JavaCC的一个早期版本,提供了基本的语法解析功能和词法...
maven-javacc-plugin-2.0.4.jar
ph-javacc-maven-plugin 的更新版本。 最初是JavaCC 6.1.3,后来更新到JavaCC 7.0,但与此同时,底层代码是项目,它是JavaCC 7.0.3的分支,但代码和输出质量有所改善。 主要区别在于在Java 1.5以下生成代码的代码...
在学习JavaCC时,首先需要理解词法分析、语法分析和简单的语义分析的概念。词法分析涉及识别输入源代码中的基本单元,如关键字、标识符、常量和运算符,将其转化为一个个Token。语法分析则是将Token序列转换成抽象...
标题"javacc-4.0.zip"表明这是JavaCC的4.0版本,通常包含完整的源码、文档、示例和相关的库文件。此版本可能针对特定的Java版本进行了优化,并且可能修复了一些已知的问题或添加了新功能。 描述中的"调试程序需要的...
maven-javacc-plugin-2.0.7-sources.jar
maven-javacc-plugin-2.0.5.jar
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
maven-javacc-plugin-2.0.4-sources.jar
maven-javacc-plugin-2.0.0-sources.jar
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
maven-javacc-plugin-2.0.6-sources.jar
maven-javacc-plugin-2.0.5-sources.jar
maven-javacc-plugin-2.0.3-sources.jar
maven-javacc-plugin-2.0.1-sources.jar
maven-javacc-plugin-1.2.10-sources.jar
maven-javacc-plugin-1.2.9-sources.jar
maven-javacc-plugin-1.2.8-sources.jar
maven-javacc-plugin-1.2.7-sources.jar