【问题标题】:Defining a Template in Flex在 Flex 中定义模板
【发布时间】:2019-04-26 16:58:02
【问题描述】:

我想在 flex 中定义一个“KEYER”,它是“[]”中的一个“KEY”。 “KEY”以一个字母和一串字母、数字和以下字符开头:“~_'?$.-”。 我定义:

keyChar         ([a-zA-z0-9~_'?$. \-])
letter          ([a-zA-Z])
key             ({letter}{keyChar}+)
keyer           ("["{key}"]") 

和:

<*>{keyer}        print("KEYER");

不知何故输入:

[keyer1] [keyer2] [keyer 3]

被解读为一个 KEYER 而不是三个。我做错了什么?

【问题讨论】:

    标签: compilation flex-lexer lexical-analysis lexical


    【解决方案1】:

    您在keyChar 的模式中写了A-z 而不是A-Z[A-z] 包括Za 之间的字符,其中包括括号。

    总的来说,在不必要的时候最好避免使用范围表达式。我会写:

    keyChar         ([[:alnum:]~_'?$. -])
    key             ([[:alpha:]]{keyChar}+)
    keyer           ("["{key}"]")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 2010-11-30
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多