标签: language-theory

运行时定义

什么是运行时?我并不是说"在运行时"=因为程序/脚本正在运行.我的意思是

<your-interpret-language-here>运行时

interpreter compiler-theory language-theory terminology interpreted-language

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

语法识别后缀公式

我正在尝试创建一个后缀为中缀转换器,我无法为后缀公式创建语法.我一直在寻找它一段时间没有成功..

我可以使用什么语法来识别有效的后缀表达式?

我需要的标记是:number,+,*^(POW).

grammar compiler-theory language-theory

3
推荐指数
1
解决办法
1837
查看次数

Lisp的理论基础

我刚刚开始学习lisp(Racket)的方言,我想知道是否有人有链接或能指出我对lisp语言家族的理论基础,资源我指的是论文,文章或书籍你能想到的任何事情.

优选地指示它使用的数学概念如何构造运算符,如何解析它们,统一身份等.我在维基百科上阅读了SEXP,但我发现它有点浅薄.

我对基础感兴趣,因为我希望能够解释事情对他人的影响.

提前致谢.

lisp language-theory racket

3
推荐指数
2
解决办法
270
查看次数

允许递归构造函数有什么好处(如果有的话)?

在Java中,构造函数不能是递归的.编译时错误:"递归构造函数调用".我们假设我们没有这个限制.

要记住的事情:

  • 构造函数的返回类型为void.由于它是一种无效方法,因此无法利用递归的全部功能.
  • 构造函数可以使用this()调用自身(或任何其他构造函数).但是"对此的调用必须是构造函数中的第一个语句"
  • 我们可以在连续调用之间使用非本地数据,但仍然可以从递归构造函数中获得一些可能的收益.

允许递归构造函数会有什么好处吗?

java recursion constructor language-theory

2
推荐指数
1
解决办法
2976
查看次数

正则表达式与cfg相交的算法

我正在寻找一种算法,该算法可以输出正则表达式和上下文无关文法的交集是否为空。我知道这个问题是可判定的,但是,我找不到任何示例实现(在伪代码中)。

如果可能的话,有人可以在 .NET 中为我提供这样的算法,但这不是必须的。这个问题也被称为“规则交集”。谷歌搜索只给了我几何算法或关于它的理论。

编辑

任何人。我真的坚持下去了,还没有找到任何东西。

algorithm grammar language-theory

2
推荐指数
1
解决办法
2173
查看次数

了解scala中的中缀行为

不知道我是否应该在这里或程序员那里问这个问题,但无论如何

在Scala中,可以使用中缀语法编写方法调用,即省略点和parens.

举个例子,你可以这样做:

lst foreach println // equivalent to lst.foreach(println)
Run Code Online (Sandbox Code Playgroud)

当然人们会认为lst map _.toString会被评估lst.map(_.toString),这相当于lst.map(x$1 => x$1.toString)

但是lst map _.toString进入repl会产生令人惊讶的结果,它被评估为((x$1) => sList.map(x$1.toString))导致方法调用出现故障.

那为什么呢?为什么是它的简单的规则a.f(b)等同于a f b书写时不再适用a f _.b

scala language-theory infix-notation

2
推荐指数
1
解决办法
150
查看次数

有效的功能表示

功能类型A - > B在某种意义上不是很好.虽然功能是一等值,但由于效率问题,通常无法自由操作它们.你不能应用太多的转换(A - > B) - >(C - > D),在某些时候你必须计算一个值.

显然这是由于 - >的非严格性质.

有很多技巧可以处理Double - > Double类型的函数.可以将它们表示为给定某个基础的向量,其可以包括trig函数,多项式等.

是否有任何一般技巧来绕过A - > B类型的低效率?

或者替代 - >?

performance haskell language-theory function

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

编程"编译器" - 任何知道{(开启者)是否}的方式(关闭)?

好吧,我有一个练习来构建一种java编译器.我不会在细节上得到太多.基本上,我想知道是否可以使用可以识别结束括号的正则表达式.例如,这将是一个合法的输入

void foo(){
   asd
}
Run Code Online (Sandbox Code Playgroud)

这不会

void foo(){
   asd
   if (){
      asd
   }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,2个开启者({)只有1个close(}),这使得输入无效.有没有办法使用正则表达式并确定出现次数匹配?

java regex compiler-theory language-theory

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

所有无限的语言都是不确定的吗?

我想知道所有无限的语言都无法决定吗?

它们必须是正确的,因为TM试图决定一种无限的语言会永远循环下去,这使它成为矩形,而不是决定者。

多谢你们。

language-theory turing-machines computation-theory

0
推荐指数
1
解决办法
5183
查看次数