我正在编写一个编译器。我刚开始,所以我正在创建扫描仪(或Lexer)。目前,我正在编写一些将由我的扫描仪处理的常规定义。力图打造他们中的一个,我的下一个问题运行:正则表达式 - 奇怪的行为
我的测试,在RegExr,以下(非常简单)的正则表达式:
r = /(a|ab)/
其中“R”是一个普通的定义;我的意思是,正则表达式只是(a|ab)
。
我认为语言L(R)将是(按书Compilers: Principles, Techniques and Tools):
L(r) = {a, ab}
出人意料的是,该工具相匹配{a}
!
所以我的问题是,为什么会这样?
在正则表达式中'''是一个交流发电机,即你的正则表达式将匹配'a'或'ab'。你想让它匹配'a' _跟着by_'ab'吗? – 2015-03-19 13:12:18
嗨@JamesThorpe,其实我不想“找到”正则表达式。我在寻找的是理解上述奇怪的行为。 – 2015-03-19 13:14:38