【发布时间】:2015-05-21 08:45:35
【问题描述】:
我希望 BNF、EBNF、正则表达式和 lex 语法能够识别以下内容: 字符串必须以 A、B、C、D 或 E 之一开头,后跟任意数量的 A、B、C、D、E、0、1、2、3、_ 你也可以有 1 或符号 $ 的 0。
到目前为止我做了:
正则表达式
[A-E]([A-E0-9_]*[$]?[A-E0-9_]*)
BNF
<S>::= <letter><Rest>
<Rest>::=<rest1><symbol>|<rest1><symbol><rest1>|<symbol><rest1>|<rest1>|<symbol>
<rest1>::=<character><rest1>|<rest1><character>|<character>
<character>::=A|B|C|D|E|1|2|3|4|_
<letter>::=A|B|C|D|E
<symbol>::=$
EBNF
S=letter{character}[symbol]{character}
letter=|"A"|"B"|"C"|"D"|"E"|
character=|"1"|"2"|"3"|"4"|"A"|"B"|"C"|"D"|"E"|"_"
symbol="$"
法
^[A-E][A-E0-3_]*[$]?[A-E0-3_]*$
它们是正确的吗?正则表达式 100% 正确我想我对 ebnf、bnf 和 lex 有疑问
【问题讨论】: