gpt4 book ai didi

c++ - 如何编写递归下降解析器?

转载 作者:行者123 更新时间:2023-11-30 02:57:15 24 4
gpt4 key购买 nike

<分区>

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> ?

这是一个简单的类似数据日志的语法。我完全迷失在尝试编写解析器的过程中。我已经编写了一个词法分析器,它输出一个包含所有标记的 vector 。我知道我需要为每个产品编写方法,但我不知道如何将标记连接到解析树中(因此我可以在树完成后运行 toString() 函数)。我需要被指出正确的方向。谢谢。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com