野牛似乎并没有适当地识别C字符串文字
-
22-08-2019 - |
题
我的问题是,我想运行我使用柔性野牛扫描器解析器编码的问题。什么我的程序是应该做的是采取用户输入(在我的情况下,对于数据库系统查询我设计),lex和解析,然后执行相应的动作。实际发生的是,我的解析器代码没有正确解释字符串文字,我给它。
下面是我的代码:
130 insertexpr : "INSERT" expr '(' expr ')'
131
132 {
133 $$ = new QLInsert( $2, $4 );
134 }
135 ;
和我的输入,以下 “查询:” 提示:
查询:INSERT ABC(5);结果 输入:1.0-5:语法错误,突发串,期望文件或行或INSERT或结束的结束“;”
现在,如果我删除“插入”串从线路130我parser.yy码文字,程序运行得很好。事实上,存储输入数据(即,“ABC”和整数5)之后,它正确地返回权还给我。
起初,我认为这是与字符编码的问题。需要编译和使用相同的编码,这应该不是一个问题看到,因为我编译和从相同的终端上运行运行野牛代码。
我的系统的细节:
的Ubuntu 8.10(Linux的2.6.24-16-通用),点击 2.5.34弯曲结果 野牛2.3结果 GCC 4.2.4结果
如果您需要任何更多的信息或代码,让我知道!
其他提示
Thankee,thankee,thankee!
只是为了澄清,这里是我如何实现我的解决方案的基础上,从jpalecek的意见。首先,我声明在野牛代码一个INSERT令牌(parser.yy):
71 %token INSERT
接着,我定义在flex代码令牌(scanner.ll):
79 "INSERT INTO" { return token::INSERT; }
最后,我使用的令牌INSERT在我的语法规则:
132 insertexpr : INSERT expr '(' expr ')'
133
134 {
135 $$ = new QLInsert( $2, $4 );
136 }
137 ;
和瞧!我过度扩张的头痛终于结束了!
谢谢,jpalecek:)
不隶属于 StackOverflow