1

私は文脈自由文法に不慣れで、これまでのところ、左端/右端の派生や 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 | え?そして、開始記号は何ですか?

ありがとうございました!

4

3 に答える 3

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
于 2012-10-05T08:49:18.540 に答える
1

準備が整った Java 文法パーサー (例: http://www.antlr.org/grammar/listから) を用意して、不要なものをすべて捨ててください。

于 2012-10-04T16:35:53.420 に答える
0

メソッド シグネチャについて知っておく必要があるすべての Java は、1 つのドキュメント ページにあります。文法変数を識別することから文法を書き始めます。最初に明らかなものは次のとおりです。

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

たとえば、文法規則を作成するときに、より多くの変数を導入します。

argument_list : argument
              | argument, comma, argument_list

文法を完了するとすぐに、「最上位の規則」が得られます。

method_signature : ... 

method_signature開始記号です。

于 2012-10-04T16:44:46.050 に答える