实验环境

  操作系统:windows 10

  JAVAJDK 1.8

  antlrantlr-4.7.1-complete.jar

  IDE:IntelliJ IDEA 2017.2.7


 实验目的

  实现一种语言的翻译器,将输入的源语言的程序翻译成目标语言程序。

  本次实验中用到了开源的语法分析器——anltr4,由上述的文法设计编译好文法文件,通过antlr处理.g 文件可生成对应的词法分析器和语法分析器的java文件。最终通过java文件的编写实现翻译器。


实验选题

  源语言:BF(Brainfuck)  忽略这个名字吧...

  目标语言:C++

  测试程序:1、HelloWorld程序

       2、斐波那契数列计算

  C++BF语法对比:

    BF是一种极小化的语言。它的表达能力较C++小很多,所以可以将所有的BF程序翻译为C++程序。对于BF语言的语法:传送门;对于C++的语法,大家就比较熟悉了。


文法设计

  设计原则:通过代码嵌套进行分层,以代码作用进行模块划分。


 具体实现

grammar BF;

program
    : statement*
    ;

statement
    : clause  # symbol
    | '[' statement* ']'  # middle
    ;

clause
    : '+'  # plus
    | '-'  # reduce
    | '<'  # less
    | '>'  # great
    | '.'  # point
    | ','  # comma
    ;

WS : [ \t\n\r]+ -> skip ;
BF.g4

相关文章: