[英]Is Good To Know Regular Expressions To Build a Language?
传统编程语言的语法正则表达式非常简单,因此,严格来说,您不需要成为编写编译器的正则表达式专家。 另一方面,regexp属于基本编程技能,所以我说你需要了解它们......几乎所有东西。
我会这么说的。 听起来像你在Flex&Bison的例1.3中使用Flex扫描器(第5页):
/* recognize tokens for the calculator and print them out */
%%
"+" { printf("PLUS\n"); }
"-" { printf("MINUS\n"); }
"*" { printf("TIMES\n"); }
"/" { printf("DIVIDE\n"); }
"|" { printf("ABS\n"); }
[0-9]+ { printf("NUMBER %s\n", yytext); }
\n { printf("NEWLINE\n"); }
[ \t] { }
. { printf("Mystery character %s\n", yytext); }
%%
正如您所见,NUMBER,空白和神秘角色是使用简单的正则表达式定义的(好吧,其他的也是如此,但它们并不是很有趣)。 您的编程语言无疑将使用其他正则表达式(例如,考虑十六进制文字,八进制文字,浮点/双精度和C / C ++ / Java中的注释的标记)。 它们也是一般用于编程的有用技术,所以我现在继续学习它们。
如果您正在创建解释语言,则可以使用正则表达式来识别代码行中的各种原子。
也许我偏离轨道,因为其他的回答者认为你在询问PCRE或其他什么。 但是,如果你在谈论发明一种语言,那么正则表达式与语法和其他任何东西一样重要。
正则表达式是推送自动机和确定性有限自动机之间的Chomsky层次结构的一个步骤,这是解析任何东西时特别需要的非常重要的东西,尤其是代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.