仅基于前三个字符验证某些表达式所需的Flex表达式

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

对于我的解析器,出于本问题的目的,任何以小写字母集开头的单个小写字母开头,后跟字符'='以及其他任何字符的行都是有效行。因此,以下是有效行(均从第一列开始):

    a=20
    b=50 70
    q=20 Hello There
    z=-

其他任何行均无效。我需要匹配补码。如何编写flex表达式以匹配无效行。我的困惑来自^,它表示行的开头以及对表达式的补充。我认为^ [abq] [=]。+会匹配可接受的行,因此仅用^进行补充即可。但是,表达式开头的^始终意味着在行首匹配。我做了一些其他尝试,但是那也没有用。尽管不相关,但该表达式用作丢弃无效SDP行的第一步。如果相关,请参阅here,以获取来自相关SDP RFC的详细信息。

flex-lexer lex
1个回答
1
投票
最简单的方法是始终匹配整行(或使用不同的开始条件以词法分析其余有效行)。尽管flex没有否定运算符([^…]否定字符类不是运算符),但是在这种情况下,表达式非常简单并且可以很容易地表达。请注意,各种“无效行”模式不脱节并不重要,因为哪一个匹配特定的无效行都无关紧要。因此,这是我认为可以与所有无效行匹配的三种模式
© www.soinside.com 2019 - 2024. All rights reserved.