为java原型的子语言创建一个无上下文语法

时间:2012-10-04 16:24:59

标签: java context-free-grammar

我不熟悉上下文无关语法,到目前为止我只学过左/右派生和G =(V,E,R,S)之类的东西。但我试图解决的问题涉及java原型,我不是很擅长java。所以我真的不知道从哪里开始。

为Java原型的子语言提供无上下文语法。

int myMethod();
double myMethod(int x, double y);
static double f(int x, double y, int z);
public static double g();

这些是方法和变量,我如何与S =>等事物联系起来? Sa | e?什么是起始符号?

谢谢!

3 个答案:

答案 0 :(得分:1)

准备好java语法解析器(例如来自http://www.antlr.org/grammar/list)并扔掉所有不必要的东西。

答案 1 :(得分:1)

这就是我想出的。你能花一点时间看看这是否有意义?

S -> AB 
A -> PCT | CT | T 
B -> M(V);
V -> TX | TX,V | e

T -> int | double
C -> static | e
P -> public | e
M -> myMethod | f | g
X -> x | y | z

答案 2 :(得分:0)

您需要了解的有关方法签名的所有Java都位于单doc page上。您通过识别语法变量开始编写语法。显而易见的是

- type
- argument_name
- method_name
- parenthesis (2 terminal symbols)
- comma (terminal)
- semicolon (terminal)

在编写语法规则时引入更多变量,例如

argument_list : argument
              | argument, comma, argument_list

一旦你完成语法,你就会拥有最重要的规则"

method_signature : ... 

method_signature是起始符号。