标签: grammar

如何识别语法是LL(1),LR(0)还是SLR(1)?

如何识别语法是LL(1),LR(0)还是SLR(1)?

任何人都可以使用此示例或任何其他示例来解释它吗?

X→Yz | 一个

Y→bZ | ε

Z→ε

grammar parsing ll-grammar lr-grammar

61
推荐指数
3
解决办法
8万
查看次数

D的语法真的没有语境吗?

我几个月前在D新闻组上发布了这个,但由于某种原因,答案从未真正说服过我,所以我想我会在这里问.


D的语法显然没有上下文.

但是,C++的语法不是(即使没有宏).(请仔细阅读!)

现在被授予,对编译器,词法分析器和解析器一无所知(正式).我所知道的只是我在网上学到的东西.
以下是(我相信)我对上下文的理解,在非技术术语中:

语言的语法是无上下文的,当且仅当你能够总是理解给定代码片段的含义(尽管不一定是确切的行为)而不需要在任何其他地方"看".

或者,严格:

如果我需要,语法不能无上下文我只是通过查看它就无法告诉表达式的类型.

因此,例如,C++失败上下文测试,因为意义confusing<sizeof(x)>::q < 3 > (2) 依赖于q.

到现在为止还挺好.

现在我的问题是:可以对D说同样的话吗?

例如,在D中,可以通过Value[Key]声明创建哈希表

int[string] peoplesAges;   // Maps names to ages
Run Code Online (Sandbox Code Playgroud)

静态数组可以用类似的语法定义:

int[3] ages;   // Array of 3 elements
Run Code Online (Sandbox Code Playgroud)

模板可以用来使它们混淆:

template Test1(T...)
{
    alias int[T[0]] Test;
}

template Test2(U...)
{
    alias int[U] Test2;  // LGTM
}

Test1!(5) foo;
Test1!(int) bar;
Test2!(int) baz;  // Guess what? It's …
Run Code Online (Sandbox Code Playgroud)

c++ grammar d context-free-grammar

59
推荐指数
6
解决办法
5801
查看次数

LL(1),LR(1),LR(0),LALR(1)语法的例子?

对于一些主要的解析算法(LL(1),LR(1),LR(0),LALR(1)),是否有一个很好的在线资源和一组语法?我发现许多单独的语法属于这些家庭,但我知道没有好的资源,有人编写了大量的示例语法.

有谁知道这样的资源?

grammar parsing lalr ll-grammar lr-grammar

56
推荐指数
2
解决办法
5万
查看次数

有可读的编程语言吗?

我的意思是,是否有编码语言与人类风格编码?例如:

Create an object called MyVar and initialize it to 10;
Take MyVar and call MyMethod() with parameters. . .
Run Code Online (Sandbox Code Playgroud)

我知道它不是那么有用,但创建这样的语法会很有趣.

grammar nlp

52
推荐指数
21
解决办法
1万
查看次数

为什么这不是python中的语法错误?

今天在我们的代码库中注意到一行,我认为肯定会因为语法错误而无法构建,但是测试正在通过,所以显然它实际上是有效的python(在2.x和3中).

条件表达式有时不需要空格:

>>> 1if True else 0
1
Run Code Online (Sandbox Code Playgroud)

如果LHS是变量,它不起作用:

>>> x = 1
>>> xif True else 0
  File "<stdin>", line 1
    xif True else 0
           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

但它似乎仍然适用于其他类型的文字:

>>> {'hello'}if False else 'potato'
'potato'
Run Code Online (Sandbox Code Playgroud)

这里发生了什么,它是出于某种原因故意成为语法的一部分吗?这个奇怪的怪癖是一种已知/记录的行为吗?

python grammar conditional-expressions

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

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万
查看次数

如何检查句子是否正确(Python中的简单语法检查)?

如何判断一个句子在Python中是否有效?

例子:

I love Stackoverflow - Correct
I Stackoverflow love - Incorrect
Run Code Online (Sandbox Code Playgroud)

python grammar nlp

43
推荐指数
4
解决办法
5万
查看次数

Ruby语法

我正在寻找BNF形式的Ruby语法.有正式版吗?

ruby grammar bnf

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

在Javadocs中,我应该如何在<code>标签中编写复数形式的单个对象?

我有一个名为的班级Identity.在我的javadoc评论中,我将其称为复数形式.我可以想到两个解决方案:更改<code>Identities</code><code>Identity</code>s 的引用.这些都不正确,我想知道是否有更好的解决方案.

这是一个清晰的例子:

/**
  * Returns an <code>IdentityBank</code> of <code>Identity</code>s with the given sex.
  */
Run Code Online (Sandbox Code Playgroud)

要么

/**
  * Returns an <code>IdentityBank</code> of <code>Identities</code> with the given sex.
  */
Run Code Online (Sandbox Code Playgroud)

java grammar javadoc

40
推荐指数
3
解决办法
1944
查看次数

无上下文语法与上下文敏感语法?

有人可以向我解释为什么这种语法[无上下文语法和上下文敏感语法]接受一个字符串?

我所知道的是

无上下文语法是一种形式语法,其中每个生成(重写)规则是V→w的形式,其中V是单个非终结符号,w是一串终端和/或非终端.w可以是空的

上下文敏感语法是一种形式语法,其中任何生成(重写)规则的左侧和右侧可以被终端和非终结符号的上下文包围.

但是,我怎么能解释为什么这些语法接受一个字符串?

algorithm grammar parsing context-free-grammar context-sensitive-grammar

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