recursive-descent

    0热度

    1回答

    解析方法的正确分类是什么?我在不同的网站和讲座上看到了不同的分类。 这里有一些。 我发现这个上blog 这是从教程点Top Down 和 Bottom Up 现在这一个从GATE讲师名为Ravindra 我完全糊涂了什么会的解析方法正确分类。请在描述分类的答案中包含一棵树状结构图。 请发表评论您已投票问题或回答。

    0热度

    2回答

    我写布尔表达式的递归下降解析器的布尔表达式,例如: (1 * 0) (0 + ~1) (0 * (1 + c) 其中1为“真”,0是“假”,+是'或',*是'和',〜是'不是','c'只是一些变量名(可以是任何单个字母)。我计划使用括号而不是实施某种操作顺序。 我现在的分析器可以识别表达 Expression ::= 1 | 0 | Character

    1热度

    1回答

    有人可以用简单的术语解释我的递归下降解析器是什么? 我被困在试图得到它。这在wikipedia中解释得非常模糊。 递归下降解析器是一种自顶向下的解析器,构建为一组递归过程,每个过程都实现语法的生成规则。 那么,我能理解它吗?解析器是一个按预定义顺序逐一执行命令的程序,每次执行命令时都具有相同的含义,但它会根据输入以某种方式调整输出,这意味着每次输入时调整可能会不同被改变。 而我仍然不明白为什么在这

    0热度

    1回答

    我在使用ANTLR 4和IntelliJ的第一步。我正在尝试为数学表达式创建一个简单的递归爬山解析器。我得到一个错误 line 1:0 mismatched input '3' expecting {VARIABLE; REALNUM, INTNUM} 好像词法分析器不能正确转3到令牌,解析器使用,但我不能找到问题存在。 词法: lexer grammar testLexer; PLUS:

    0热度

    1回答

    当我输入类似3(5)的东西时,我的代码失败。 如何修改我的代码,以便它在中间表达式中解决然后相乘? double parseTerm() { double x = parseFactor(); while(true) { if (shift('*')){ x *= parseFactor(); // multiply } el

    1热度

    1回答

    我似乎无法找到PEG本身的解析表达式语法(PEG)。 如何解析解析表达式语法? 注意这个问题不是关于如何从PEG构建一个递归正确的解析器,而是解析一个PEG。

    1热度

    1回答

    我如何描述与类型别名这个递归语法: type FieldValue = Seq[String] :+: String :+: Int :+: Long :+: CNil type FieldLeaf = FieldValue :+: SubField :+: CNil type SubField = Seq[Field] type Field = (String, FieldLeaf)

    0热度

    1回答

    我已经开始在C++中编写多态递归下降解析器。但是我遇到了一个问题。这些课程都设置这样的: class Node { public: std::vector<Node*> children; }; class NodeBinary : public Node { public: Node* left; Node* right; }; class Node

    2热度

    3回答

    我想要解答这个问题的更多帮助,Evaluating a math expression given in string form。用户@Boann用一个非常有趣的算法回答了这个问题,他也指出可以改变以接受变量。我已经设法改变它,并让它起作用,但不知道他是如何分离编译和评估。这里是我的代码: import java.util.HashMap; import java.util.Map; pub

    2热度

    1回答

    我试图在给定条件下查找所有可能的表达式组合。 例如,考虑以下条件。 ((b > 5) | (c > 4)) & ((c < 6) | (b < 2))) 我需要一个像 [(b > 5) , (c < 6)] [(b > 5) , (b < 2)] [(c > 4) , (c < 6)] [(c > 4) , (b < 2)] 的逻辑是一样(a|b)&(c|d) -> a&c,a&d,