C++ 次の文法の再帰降下パーサーを作成する方法がわかりません。
<Datalog Program> -> Schemes : <Scheme List>
Facts : <Fact List>
Rules : <Rule List>
Queries : <Query List>
<EOF>
<Scheme List> -> <Scheme> <Scheme List Tail>
<Scheme List Tail> -> <Scheme List> | ε
<Scheme> -> <Identifier> ( <Identifier List> )
<Identifier List> -> <Identifier> <Identifier List Tail>
<Identifier List Tail>-> , <Identifier List> | ε
<Fact List> -> <Fact> <Fact List> | ε
<Fact> -> <Identifier> ( <Constant List> ) .
<Constant List> -> <String> <Constant List Tail>
<Constant List Tail> -> , <Constant List> | ε
<Rule List> -> <Rule> <Rule List> | ε
<Rule> -> <Head Predicate> :- <Predicate List> .
<Head Predicate> -> <Identifier> ( <Identifier List> )
<Predicate List> -> <Predicate> <Predicate List Tail>
<Predicate List Tail> -> , <Predicate List> | ε
<Predicate> -> <Identifier> ( <Parameter List> )
<Parameter List> -> <Parameter> <Parameter List Tail>
<Parameter List Tail> -> , <Parameter List> | ε
<Parameter> -> <String> | <Identifier> | <Expression>
<Expression> -> ( <Parameter> <Operator> <Parameter> )
<Operator> -> + | *
<Query List> -> <Query> <Query List Tail>
<Query List Tail> -> <Query List> | ε
<Query> -> <Predicate> ?
これは単純なデータログのような文法です。私はパーサーを書こうとして完全に迷っています。私はすでに、すべてのトークンを含むベクトルを出力する語彙アナライザーを作成しました。プロダクションごとにメソッドを記述する必要があることはわかっていますが、トークンを解析ツリーに接続する方法がわかりません (ツリーが完成した後で toString() 関数を実行できるようにするため)。私は正しい方向に向けられる必要があります。ありがとう。