Programming languages 哪些编程语言有规则的语法?
我很好奇哪种(如果有的话)真实世界的编程语言有规则的语法(即所有语法正确的程序集都是规则的) 另请参见这个问题:.和类似词当然是有规律的 另一方面,任何支持(parens)的语言都不是规则的,因为自动机识别它需要一个堆栈。如果没有(){}[]支持,我真的不知道有多少种语言除了汇编之外还能做什么Programming languages 哪些编程语言有规则的语法?,programming-languages,compiler-theory,regular-language,Programming Languages,Compiler Theory,Regular Language,我很好奇哪种(如果有的话)真实世界的编程语言有规则的语法(即所有语法正确的程序集都是规则的) 另请参见这个问题:.和类似词当然是有规律的 另一方面,任何支持(parens)的语言都不是规则的,因为自动机识别它需要一个堆栈。如果没有(){}[]支持,我真的不知道有多少种语言除了汇编之外还能做什么 只有现实世界中出现的例子,而且可能是经常出现的是。作为一个实际问题,它们都没有。仅供参考,您对(帕伦斯)的评论是不正确的。古老的Fortran有帕伦。。但是有3个深度的限制。正则语言在现代计算中的相关性是
只有现实世界中出现的例子,而且可能是经常出现的是。作为一个实际问题,它们都没有。仅供参考,您对(帕伦斯)的评论是不正确的。古老的Fortran有帕伦。。但是有3个深度的限制。正则语言在现代计算中的相关性是什么?直觉上,我会想象,要在电路上实现某种东西,它需要一种规则的语言,机器代码语法似乎是规则的。在软件中有没有任何时候正规语言是有用的?我似乎很少使用严格的正则语言——PCRE的名称中有“正则表达式”,但如果我理解正确,它甚至不是严格的正则语言。Brainfuck不是一种正则语言,因为它允许嵌套循环,其中
[
标记循环的开始,]
标记循环的结束。由于这些必须匹配,brainfuck不是常规的。@Pall根据实现,brainfuck可以是常规的,也可以不是。您可以将它们解析为while{}
语句或push[
和pop+jmp/ret]
指令。从技术上讲,括号计数不需要匹配。@KeksArmee您将翻译与实际解析混为一谈。当然,您可以使用简单的替换操作将brainfuck翻译成C,但要真正解析正确的brainfuck,您需要一个至少可以处理上下文无关语法的解析器。您不能使用常规语法来表达所有语法正确的brainfuck程序集。