繁体   English   中英

很高兴知道正则表达式来构建语言吗?

[英]Is Good To Know Regular Expressions To Build a Language?

我正在阅读O'Reilly的Flex&Bison ,并想知道预先学习正则表达式是否有助于开发编程语言?

正则表达式可以使用形式语言理论定义 ,因此它们是互补的概念。

在开始构建语言之前,对正则表达式形式语言理论有一个很好的理解是个好主意。

所以回答你的布尔问题: 是的

传统编程语言的语法正则表达式非常简单,因此,严格来说,您不需要成为编写编译器的正则表达式专家。 另一方面,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM