摘要:
关于正则的语法方面,就做到这吧。下一步是生成nfa,进而dfa,以及dfa的最简化。等下一个版本出来的话,估计要好久了。 1 #include 2 #include 3 #include 4 //这个版本在上一个版本的基础上,添加了?\+这两个操作符,这两个操作符都是单目操作符,跟*操作符同一级别 5 //因此碰到这两个操作符的时候,跟*操作符一样的处理 6 //除了新加的操作符外,还添加了字符集,模式为a-z这种,但是字符集只能通过假名来引用 7 //因此如果想使用字符集,则必须先通过假名来定义这个字符集,然后在后续的正则表达式中通过假名 8 //来使用这个字符集 9... 阅读全文
摘要:
默认为转义字符的优先级最高,而且转义字符的作用是让输入处理函数把转义字符的下一个字符当作字符值看待,而不是可能的操作符。当前版本并不支持c语言中那些特殊含义的转义字符,例如\t。这个特性将会在之后的版本中加上。而对于c语言中的三元组转义字符,我将不会考虑他的存在,没啥意义。下面是代码,欢迎测试。 1 #include 2 #include 3 #include 4 //这个版本允许定义正则子表达式,定义的时候以名字开头,然后是冒号,然后是正则表达式主体。 5 //在引用子表达式的时候,需要用中括号把子表达式括起来,因此中括号也跟其他操作符一样,作为保留字符 6 //这个版本加... 阅读全文