我可以看到人们一直在询问是否应该在下一版本的C#或Java中包含多重继承.有幸拥有这种能力的C++人说,这就像给某人一条绳子最终自我吊死.
多重继承有什么问题?有没有具体的样品?
真正的现代正则表达式真正识别哪种语言?
每当存在具有反向引用的无限长度捕获组(例如(.*)_\1)时,正则表达式现在匹配非常规语言.但是,就其本身而言,这还不足以匹配诸如S ::= '(' S ')' | ?匹配对的parens的无上下文语言.
递归正则表达式(对我来说是新的,但我确信存在于Perl和PCRE中)似乎至少能识别出大多数CFL.
有没有人在这方面做过或读过任何研究?这些"现代"正则表达的限制是什么?对于LL或LR语法,他们是否严格认可或严格低于CFG?或者是否存在可以被正则表达式识别而不是CFG 而且相反的语言?
非常感谢与相关论文的链接.
我不是在谈论类似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怎么样?
我是正式语言概念的新手,所以请耐心等待.是的,我已阅读维基百科的文章;)
我发现很多人使用闭包和块互换的词.这些人中的大多数都无法解释他们在谈论什么.
一些Java程序员(甚至来自真正昂贵的咨询公司)将匿名内部类称为"块"和"闭包" - 但我知道这不是真的.(你不能从定义它们的方法范围中传递可变变量......)
我在找:
我真的很想看到关于这些的链接,文章或书籍参考.
theory computer-science programming-languages language-theory
如果没有,是否有一个好的计数器示例显示迭代算法,其中不存在递归对应物?
如果所有迭代算法都可以递归表达,那么在哪些情况下更难以做到这一点?
此外,编程语言在这一切中扮演什么角色?我可以想象,Scheme程序员对Java迭代(=尾递归)和堆栈使用的看法与Java专用程序员不同.
我一直想用自己的语言编写一段时间(表面上是为了学习经验),因此需要在构建解析器,解释器和编译器时相对基础.所以:
编辑:我不是在寻找编译器编译器/解析器编译器,如Lex,Yacc和Bison ......
compiler-construction parsing interpreter compiler-theory language-theory
从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
对于我的计算语言类的理论,我们得到了一个家庭作业,用一种语言来实现一段代码,该语言只有流控制的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)
这是从我的班级笔记中复制的,所以如果缺少或不正确,请不要责怪我! …
在C#/ Java中,运算符优先级is分别instanceof导致一些丑陋的必要括号.例如,而不是写作if (!bar instanceof Foo)你必须写if (!(bar instanceof Foo)).
那么为什么语言团队认为!运营商优先级高于/ instanceof?不可否认,在C#中你可以覆盖operator!哪些会在某些情况下导致不同的结果,但这些情况似乎非常罕见(并且在任何情况下都不直观),而检查某些东西不是某种类型或子类型的情况很多更倾向于.
language-theory ×10
theory ×2
c# ×1
grammar ×1
html ×1
interpreter ×1
iteration ×1
java ×1
oop ×1
parsing ×1
perl ×1
python ×1
recursion ×1
regex ×1
sgml ×1
terminology ×1
while-loop ×1