<分区>
好的,那么,我有一个构建某种 Java 编译器的练习。我不会得到太多的细节。 基本上,我想知道是否可以使用可以识别右括号的正则表达式。 例如,这将是一个合法的输入
void foo(){
asd
}
这不会是
void foo(){
asd
if (){
asd
}
如您所见,对于 2 个开场符 ({) 只有 1 个结束符 (}),因此输入无效。有什么方法可以使用正则表达式并确定出现次数是否匹配?
<分区>
好的,那么,我有一个构建某种 Java 编译器的练习。我不会得到太多的细节。 基本上,我想知道是否可以使用可以识别右括号的正则表达式。 例如,这将是一个合法的输入
void foo(){
asd
}
这不会是
void foo(){
asd
if (){
asd
}
如您所见,对于 2 个开场符 ({) 只有 1 个结束符 (}),因此输入无效。有什么方法可以使用正则表达式并确定出现次数是否匹配?
最佳答案
无法使用正则表达式检查括号是否正确,因为要检查您需要跟踪打开了多少个括号等,但正则表达式无法做到这一点。
我建议你,特别是如果你想构建一个编译器,熟悉形式语言理论。例如,这篇维基百科文章在形式语言理论的上下文中给出了一些关于正则表达式的见解:http://en.wikipedia.org/wiki/Regular_expression#Formal_language_theory
关于java - 编程 "compiler"- 有什么方法可以知道 {(开启者)是否 }(关闭)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16760899/