实验环境:
操作系统:windows 10
JAVA:JDK 1.8
antlr:antlr-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 ;