【问题标题】:Which programming languages are regular? [closed]哪些编程语言是常规的? [关闭]
【发布时间】:2013-03-04 14:51:06
【问题描述】:

对任何“为什么这个正则表达式不能工作 html!?!”的典型反应问题是“因为 HTML 不是常规语言”。

所以,我很好奇是否有人列出了常见的编程语言列表,这些语言是正则语言,因此适用于正则表达式匹配。我知道有一些方法可以确定一种语言是否是常规语言(逐个案例),但对于复杂的语言,证明也可能相当复杂。我想也许一个快速的语言检查列表会很有用。

我也知道你可以用非常规语言做正则表达式,但它们并不总是可靠的(html 示例)。

【问题讨论】:

  • 任何表达能力足以进行“真正”编程(即图灵完备)的编程语言都是非常规的。
  • 我不确定这是否是一个好问题,因为它是一个 X 列表,但我看不出它有什么建设性。一种语言是否规则是一个非常明确的属性,所以我无法想象“这个问题会如何引发辩论、争论、投票或扩展讨论”。
  • 您在寻找编程语言还是标记语言?
  • 对不起,我理解 html 是一种标记语言,而不是一种编程语言。我想我的意思更多的是什么语言(如果有的话)语言(编程语言如 C/Java/Perl/等,查询语言如 SQL/SPARQL/等,甚至标记语言如 HTML 或样式表语言如 CSS)

标签: regex language-agnostic programming-languages regular-language


【解决方案1】:

不考虑任何对嵌套或编程长度的任意限制,我怀疑任何常见的编程语言都是常规的。即使是简单的(中缀)算术表达式也构成了一种非常规语言,并且它是一种不支持它们的不寻常的编程语言。更一般地说,如果一种语言允许嵌套任何结构而不限制其深度,那么它就不是常规语言。

【讨论】:

  • 中缀运算符如何非常规? \d+([*/+-]\d+)* 是一种常规语言,不是吗?
  • 我在想括号。虽然它们不是严格要求的,但通常会被录取。任何需要括号平衡的语言都是非常规的。
猜你喜欢
  • 2013-09-13
  • 2016-05-30
  • 2011-01-13
  • 2011-07-17
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多