2013-10-19 31 views
-2

我的目标是实现Ç语言的一个很简单的词法分析,当你读一个表达式AB = 3,那么它会如分析如下:词法分析部分:分析:作为一个经营者,而不是分离

ID<ab> OP<=> LIT<8> (op will be "operator",LIT will be "literal"). 

还有一种情况,当你阅读的表达一个? b:c。通常它会被分析为

ID<a> SEP<?> ID<b> SEP<:> ID<c>". 

但我们知道它实际上是三元运算符。所以上面列出的分析是不正确的。

现在我只想引用编译器如gcc,g ++并检查这些编译器如何实现词法分析?任何人都可以给我一个建议?

+0

所以,如果你想它作为一个操作符,你为什么要扫描它作为分隔符?这里有什么问题? – EJP

+0

因为我从其他人处获得此资源。两个“?”和“:”被默认处理为分隔符。 – ryu

回答

0

是什么让词法分析器输出不正确?你在思考太多,试图解决词法分析器中的解析问题。如果你真的喜欢,你可以改变?成为一个运算符(因为它应该在这种情况下),但最终它并不重要,只需使用已定义为令牌的终端进行分析即可。

+0

是的,你是对的。因为我是这个项目的新手,还是无法区分词法分析器和语法分析器的用法。到目前为止,解决这类问题还有一点时间。我稍后会再检查一次。 – ryu