javacc-01

本文档详细介绍了使用JavaCC构建一个能够处理包含空格、换行符的整数加法运算的词法和语法分析器。内容包括Option块、词法描述器的设置,以及如何处理加号、数字等符号。通过BNF生产式定义语法分析器,解析输入序列并判断其合法性。最后,解释了生成的Java代码的工作原理。
摘要由CSDN通过智能技术生成

例1:整数加法运算

  在这个例子中,我们将判断如下输入的式子是否是一个合法的加法运算:

99 + 42 + 0 + 15

  并且在输入上面式子的时候,数字与加号之间的任何位置,都是可以有空格或者换行符的,也就说,即使我们输入的式子是下面这种形式,我们所编写的词法和语法分析器也应该要能判断出来它是一个合法的加法运算表示形式:

99      + 42 + 0
+ 15

  (注:上面输入的式子中既有空格,也有制表符,还有换行符)

1.Option块和class声明块

  语法描述文件的第一部分是:

/* adder.jj Adding up numbers */
options {
    STATIC = false ;
    }

PARSER_BEGIN(Adder)
    class Adder {
        public static void main( String[] args ) throws ParseException, TokenMgrError {
            Adder parser = new Adder( System.in );
            parser.Start();
        }
    }
PARSER_END(Adder)

  上面的代码可以分为两个部分,一个是options块,另一个是PARSER_BEGIN(XXX)…… PARSER_END(XXX)块。

  • 在options中,几乎所有配置项的默认值都适用于本例子,除了 STATIC选项,STATIC默认是true,这里要将其修改为false,使得生成的函数不是static 的。
  • 接下来是ARSER_BEGIN(XXX)……PARSER_END(XXX)块,这里定义了一个名为 Adder的类,当然在这个块中定义的并非是Adder类的全部,JavaCC会根据.jj描述文件的其他部分的描述,来生成Adder的其他声明信息。另外注意到,在该类的main方法声明中, 抛出了两个异常类,分别为ParseException和TokenMgrError,这两个异常类会在使用javacc 命令编译当前.jj描述文件的时候生成。)

2.词法描述器

  我们在后面还会再讲到main方法。这里让我们先看看词法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值