我不熟悉上下文无关语法,到目前为止我只学过左/右派生和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?什么是起始符号?
谢谢!
答案 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
是起始符号。