2014-02-21 50 views
1

我想创建一个允许输入正则表达式的小语言。我将用(f)lex扫描。什么(f)正则表达式的lex规则?

因此,我需要一个正则表达式的Lex规则。有没有人做过这个?

+1

有趣的问题。任何角色都可以成为正则表达式的一部分,所以大概你正在寻找比'。*'更具表现力的东西。由于正则表达式的元素可以或多或少嵌套到任意深度,所以我怀疑使用yacc这样的工具解析会对您的项目有所帮助。由于您的正则表达式会嵌入一种小语言,因此您可能希望用特殊的分隔符(例如Perl和JavaScript的反斜杠)将它们设置为一种语言。 –

+1

什么是“正则表达式的lex规则”?这是没有意义的。一个正则表达式(用你的语言)是lex在一个简单字符串常量之外识别的东西。为它定义lex规则是不可能的。任何_surrounding_东西(标记等)都可能是可标记的,例如Perl的#s regex#replace#flags'。 –

+0

@DavidGorsline有趣的评论,谢谢!事实上,正则表达式不能由词法分析规则来指定。 –

回答

1

什么是“正则表达式的lex规则”?这是没有意义的。一个正则表达式(用你的语言)是lex在一个简单字符串常量之外识别的东西。为它定义lex规则是不可能的。任何周围的东西(标记等)可能都是可标记的,例如Perl's#regex#replace#flags

+0

你是对的。你的回答使我从深度编码中退步了一步;然后我看到了明显的。谢谢。 –

+0

非常欢迎,谢谢! –