相关疑难解决方法(0)

LR(1)语法的状态,符号和规则数量的合理上限是多少?

我正在制作LR(1)解析器,并且我遇到了各个地方的性能瓶颈.

我想尝试优化解析器的数据结构,但为了做到这一点,我需要大致了解有多少状态,规则和终端符号对于(可能很复杂的)计算机语言(如C++)是合理的.

我的猜测是复杂语言的典型语法会:

  • ≤100个终端符号
  • 每个生产≤50个符号
  • ≤2000规则
  • ≤10,000个州

但我真的不知道他们有多正确.

请注意,我假设每个规则都是非终结符号  → 符号符号 符号 ...,因此看起来像单个复合"规则" foo: (bar | baz)+实际上可能包含5个规则,而不仅仅是1个规则.

他们合理吗?如果没有,我在哪里找到一些数字?

c++ parsing lr-grammar

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

标签 统计

c++ ×1

lr-grammar ×1

parsing ×1