词法分析器会识别两个中间没有空格的令牌吗?

问题描述 投票:0回答:1

我想用Flex模拟一个词法分析器。

程序的一部分将识别由五个字符组成的形状的名称,[ABCDE]在所有组合中,但仅当字母数为一,三或四时。在这种情况下,它将打印输入和单词“shape”。

例如,如果输入是'A','BCD','CDBE',它将打印'A:shape'。我的问题是,考虑到像'AB'这样的输入,两个字符粘在一起,如果作为一个整体,这不是一个有效数量的字母,真正的词法分析器会做什么?将“A”识别为形状,然后将“B”识别为形状,还是将其视为错误?

flex-lexer lexical-analysis
1个回答
0
投票

这取决于规则的编写方式。如果所有有效单个字母都有一个简单的规则“[ABCDE]”,则“AB”将被识别为两个有效的标记“A”和“B”。我认为这不对,对吧?

我不是词法分析器和解析器的专家。这只是一些粗略的想法。

^[ABCDE]{4}$ { /* do sth. */ return TOKEN4; }
^[ABCDE]{3}$ { /* do sth. */ return TOKEN3; }
^[ABCDE]{1}$ { /* do sth. */ return TOKEN1;}
^.*$         { /* report error or throw the input. */ ; }
© www.soinside.com 2019 - 2024. All rights reserved.