lemon

    5热度

    2回答

    我有一个问题,使用(可重入)Flex +柠檬解析。我使用简单的语法和词法分析器here。当我运行它时,我会输入一个数字后跟一个EOF标记(Ctrl-D)。打印输出结果将改为: 89 found int of . AST=0. 其中第一行是我放的数量从理论上讲,AST值应该是一切,我把总和 编辑:。当我打电话解析( )手动它运行正确。 此外,即使令牌为0(停止令牌),柠檬似乎也运行atom

    0热度

    2回答

    我不确定此语法是否适用于也应该能够执行单引号和双引号的shell命令语言。看起来非重要的命令可以工作,例如ls -al | sort | wc -l但简单的一个不适用于单引号:echo 'foo bar'不起作用。 %{ #include "shellparser.h" %} %option reentrant %option noyywrap %x SINGLE_QUOTE

    1热度

    1回答

    我有我在Ragel中实现的词法扫描器,当我识别各种类型的空白时,我需要使用一个标记。但除了分离其他令牌之外,我不关心空白。如果我把它传递给我的柠檬解析器,我将不得不插入许多额外的规则来摆脱它,这将使我的语法变得丑陋,并且减慢解析速度。但是我发现让柠檬生成一个空白符号的唯一方法就是制定一个我从不打算使用的降低规则。 目前,我有一个规则list0 ::= .允许一个空的列表,所以我加了一个list0

    2热度

    1回答

    我想用柠檬和苹果核心基金会编写一个简单的JSON解析器。 这里是到目前为止的代码: %include { #import <CoreFoundation/CoreFoundation.h> #import "state.h" // struct ParserState { CFTypeRef result; }; #import "tuple.h" // struct Tuple { C

    0热度

    1回答

    我想从输入中获取参数。例如:Input:12+10。 运行我的计算器后。 我想得到12和10.我知道,我不得不使用Parse(pParser, hTokenID, sTokenData, pArg);中的第四个参数,但是怎么样? parser.y: %syntax_error{fprintf(stderr, "Syntax error\n");} %left PLUS MINUS. %left

    1热度

    1回答

    我觉得柠檬语法分析器生成器在非关联优先级上做错了。我有一个简化的语法,展现了我所看到的问题。 %nonassoc EQ. %left PLUS. stmt ::= expr. expr ::= expr EQ expr. expr ::= expr PLUS expr. expr ::= IDENTIFIER. 产生具有像这样一个冲突的报告: State 4: exp

    2热度

    1回答

    我正在将一个旧的语法移植到柠檬中,并且我已经在头文件中定义了所有的终端符号;我想用这些值而不是parser.h中生成的那些值:这是可能的吗? 覆盖parser.h完全没用,因为这只是内部发生的事情的一面镜子,匹配的值将保持相同。 (由于柠檬股大量的代码与野牛我认为,野牛解决方案将解决柠檬过问题)

    0热度

    2回答

    我能够通过跟随this question一起添加对我的解析器交替字符的语法(例如ababa或baba)的支持。 我现在正在通过允许重复字符来扩展它。 例如,我希望能够支持abaaabab和aababaaa以及。在我的情况下,只允许重复a,但允许重复b的解决方案也是有用的。 给出的规则从另一个问题: expr ::= A | B A ::= "a" B | "a" B ::= "b" A | "

    2热度

    1回答

    我试了几次。在Google上,re2c + lemon只有几个教程。 目前所有的例子出现了类似像一堆的错误: In file included from main.cpp:2:0: parser.y:44:5: error: ‘yygotominor’ was not declared in this scope A.int_value = B.int_value * C.int_va

    2热度

    1回答

    我试图学习flex和柠檬,以解析(中等)复杂的文件格式。到目前为止,我有我的语法和lex文件,我相信它正确解析示例文件。现在,我想将使用flex扫描的标记文本传递给柠檬。 柔性YYSTYPE被定义为 #define YYSTYPE char* 柠檬令牌类型是 %token_type {char *} 然而,如果我在柠檬的一组规则: start ::= MATDEF IDENTIFIER(m