标签: language-theory

多重继承的确切问题是什么?

我可以看到人们一直在询问是否应该在下一版本的C#或Java中包含多重继承.有幸拥有这种能力的C++人说,这就像给某人一条绳子最终自我吊死.

多重继承有什么问题?有没有具体的样品?

oop language-theory multiple-inheritance

115
推荐指数
7
解决办法
7万
查看次数

"现代"正则表达的认识力

真正的现代正则表达式真正识别哪种语言?

每当存在具有反向引用的无限长度捕获组(例如(.*)_\1)时,正则表达式现在匹配非常规语言.但是,就其本身而言,这还不足以匹配诸如S ::= '(' S ')' | ?匹配对的parens的无上下文语言.

递归正则表达式(对我来说是新的,但我确信存在于Perl和PCRE中)似乎至少能识别出大多数CFL.

有没有人在这方面做过或读过任何研究?这些"现代"正则表达的限制是什么?对于LL或LR语法,他们是否严格认可或严格低于CFG?或者是否存在可以被正则表达式识别而不是CFG 而且相反的语言?

非常感谢与相关论文的链接.

regex theory perl language-theory context-free-grammar

82
推荐指数
1
解决办法
6969
查看次数

HTML是无上下文的语言吗?

阅读一些 相关 问题让我思考HTML的理论本质.

我不是在谈论类似XHTML的代码.我正在谈论像这个疯狂的标记,这是完全有效的HTML(!)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html<head>
<title//
<p ltr<span id=p></span</p>
</>
Run Code Online (Sandbox Code Playgroud)

因此,鉴于SGML注入的巨大复杂性,HTML是一种无上下文的语言吗?这是一种正式的语言吗?用语法?

HTML5怎么样?

我是正式语言概念的新手,所以请耐心等待.是的,我已阅读维基百科的文章;)

html sgml grammar language-theory

46
推荐指数
4
解决办法
1万
查看次数

"闭合"和"块"之间究竟有什么区别?

我发现很多人使用闭包互换的词.这些人中的大多数都无法解释他们在谈论什么.

一些Java程序员(甚至来自真正昂贵的咨询公司)将匿名内部类称为"块"和"闭包" - 但我知道这不是真的.(你不能从定义它们的方法范围中传递可变变量......)

我在找:

  • 块的精确计算机科学定义
  • 关闭的精确计算机科学定义
  • 澄清两者之间的区别.

我真的很想看到关于这些的链接,文章或书籍参考.

theory computer-science programming-languages language-theory

45
推荐指数
3
解决办法
9529
查看次数

所有迭代算法都可以递归表达吗?

如果没有,是否有一个好的计数器示例显示迭代算法,其中不存在递归对应物?

如果所有迭代算法都可以递归表达,那么在哪些情况下更难以做到这一点?

此外,编程语言在这一切中扮演什么角色?我可以想象,Scheme程序员对Java迭代(=尾递归)和堆栈使用的看法与Java专用程序员不同.

iteration recursion programming-languages language-theory

44
推荐指数
4
解决办法
2万
查看次数

在解析器,解释器和编译器上学习资源

我一直想用自己的语言编写一段时间(表面上是为了学习经验),因此需要在构建解析器,解释器和编译器时相对基础.所以:

  • 有谁知道构建解析器,解释器和编译器的任何好资源?

编辑:我不是在寻找编译器编译器/解析器编译器,如Lex,Yacc和Bison ......

compiler-construction parsing interpreter compiler-theory language-theory

29
推荐指数
6
解决办法
7784
查看次数

什么是"注册机器"?

http://code.google.com/p/unladen-swallow/wiki/ProjectPlan我引用:

"使用JIT还可以让我们将Python从基于堆栈的机器移动到注册机器,这已被证明可以提高其他类似语言的性能(Ierusalimschy等,2005; Shi等,2005)."

在大学里,我为一个带有递归过程的语言构建了一个简单的编译器 - 它为每个被调用的过程维护堆栈帧 - 这样就可以递归调用它们,这样参数和返回值就可以工作....

2件事:

1)考虑到上面引用中使用的术语,我是否正确地认为我实施的内容将被视为"基于堆栈的机器"?

2)如果我在第(1)点的假设是正确的,那么"注册机器"如何工作?即它与基于堆栈的机器有何不同?

谢谢!

python language-theory language-design language-implementation

24
推荐指数
3
解决办法
3852
查看次数

而语言

对于我的计算语言类的理论,我们得到了一个家庭作业,用一种语言来实现一段代码,该语言只有流控制的while语句(没有if语句).这主要是为了证明你可以只使用while循环编写图灵完备语言.

对于那些能理解语言语法的人,以下是语言规则:

S -> S;S | while C do S od | id := E

E -> E + T | T | E - T

T -> T * F | F | F / T

F -> id | cons | (E)

C -> E = E | E > E | E < E | E >= E | E <= E | E != E | C and C | C or C | not(C)
Run Code Online (Sandbox Code Playgroud)

这是从我的班级笔记中复制的,所以如果缺少或不正确,请不要责怪我! …

language-theory while-loop

23
推荐指数
3
解决办法
5040
查看次数

20
推荐指数
4
解决办法
3870
查看次数

instanceof /的优先级原因

在C#/ Java中,运算符优先级is分别instanceof导致一些丑陋的必要括号.例如,而不是写作if (!bar instanceof Foo)你必须写if (!(bar instanceof Foo)).

那么为什么语言团队认为!运营商优先级高于/ instanceof?不可否认,在C#中你可以覆盖operator!哪些会在某些情况下导致不同的结果,但这些情况似乎非常罕见(并且在任何情况下都不直观),而检查某些东西不是某种类型或子类型的情况很多更倾向于.

c# java language-theory

19
推荐指数
3
解决办法
615
查看次数