标签: parser-generator

boost.org的Spirit解析器 - 生成器框架有哪些缺点?

在几个问题中,我看到了来自boost.orgSpirit解析器 - 生成器框架的建议,但是在评论中,人们抱怨使用不开心的Spirit.请那些人站出来向我们其他人解释使用Spirit的缺点或缺点是什么?

c++ parsing boost boost-spirit parser-generator

42
推荐指数
4
解决办法
9173
查看次数

从PDF文件中提取文本数据

是否可以从R中解析PDF文件中的文本数据?有没有出现是一个相关包这样的提取,但有没有人尝试或见于读该怎么办?

Python中有PDFMiner,但我想在可能的情况下将此分析保留在R中.

有什么建议?

pdf r parser-generator

41
推荐指数
6
解决办法
4万
查看次数

解析器组合器可以提高效率吗?

大约6年前,我在OCaml中对自己的解析器组合器进行了基准测试,结果发现它们比当时提供的解析器生成器慢〜5倍.我最近重新审视了这个主题,并对Haskell的Parsec和一个用F#编写的简单的手动优先攀爬解析器进行了基准测试,并惊讶地发现F#比Haskell快25倍.

这是我用来从文件中读取大型数学表达式的Haskell代码,解析并评估它:

import Control.Applicative
import Text.Parsec hiding ((<|>))

expr = chainl1 term ((+) <$ char '+' <|> (-) <$ char '-')

term = chainl1 fact ((*) <$ char '*' <|> div <$ char '/')

fact = read <$> many1 digit <|> char '(' *> expr <* char ')'

eval :: String -> Int
eval = either (error . show) id . parse expr "" . filter (/= ' ')

main :: IO ()
main = do
    file <- …
Run Code Online (Sandbox Code Playgroud)

f# haskell parsec parser-generator parser-combinators

33
推荐指数
4
解决办法
6967
查看次数

LL解析器比LR解析器有什么优势?

LL解析器比LR解析器有什么优势可以保证它们在今天的解析器生成器工具中相对流行?

根据维基百科,LR解析似乎比LL更有优势:

LR解析可以处理比LL解析更大范围的语言,并且在错误报告方面也更好,即它在输入不尽快符合语法时检测语法错误.这与LL(k)(或甚至更糟的LL(*)解析器)形成对比,LL(k)可能由于回溯而将错误检测推迟到语法的不同分支,通常使错误难以在具有长公共前缀的分离上进行本地化. .

注意:这不是作业.当我发现Antlr是一个LL解析器生成器(尽管名字中有"LR")时,我感到很惊讶.

parsing lalr parser-generator ll-grammar lr-grammar

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

Lex和Yacc在PHP中

在PHP中是否有Lex和Yacc的实现?

如果没有,任何人都可以建议一个词法分析器和解析器生成器(即Lex和Yacc之类的东西)来创建PHP代码.我不太担心生成的解析器的性能.

我厌倦了使用正则表达式解析真正不应该用正则表达式解析的东西......

php yacc lex parser-generator

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

与使用解析器组合器相比,使用像happy一样的解析器生成器有什么好处?

要学习如何编写和解析无上下文语法,我想选择一个工具.对于Haskell,有两个很大的选项:Happy,它从语法描述中生成解析器,以及*Parsec,它允许您直接在Haskell中编写解析器代码.

这两种方法的(dis)优势是什么?

parsing haskell parsec parser-generator happy

27
推荐指数
2
解决办法
4049
查看次数

Scala Parsers:可用性,差异和组合?

我的问题是关于Scala解析器:

  • 哪些可用(在标准库和外部),
  • 他们之间有什么区别,
  • 他们共享一个共同的API和
  • 可以组合不同的解析器来解析一个输入字符串吗?

我发现至少这些:

parsing scala parser-generator parser-combinators

25
推荐指数
4
解决办法
2642
查看次数

什么是好的C#编译器/编译器/解析器生成器?

我正在寻找一个解析器生成器,给出一个LL(k)语言的EBNF将给我一个C#解析器并生成EBNF中定义的类型的类.

c# parser-generator

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

GLR解析算法资源

我正在编写一个GLR解析器生成器,并希望在互联网和死树种类(不熟悉极客说话的人的书籍)上提供有关此算法相关资源的建议.

我知道Bison可以生成GLR解析器,并且考虑到它在GPL下我可以检查它的代码,但是对它有一个完整的算法描述会很好.

那么,有没有人知道我可以利用的任何好资源?谢谢.

compiler-construction parsing parser-generator glr

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

无扫描器分析器

序言:虽然解析器识别的语言集(无上下文语法)严格大于扫描程序(常规语法),但大多数解析器生成器都需要扫描程序.

(请不要试图解释其背后的原因,我非常了解它们).

我见过解析器,不需要扫描仪

使用无扫描仪有一些优点:

  • 只有一个概念(无上下文语法)而不是两个
  • 在一个文件中解析多种语言(如HTML/Javascript)
  • 解析没有保留关键字的语言(如PL/1)

通常,使用"解决方法"就像在解析器的请求上切换扫描程序一样.

问题:你知道其他任何无扫描器解析器生成器(任何语言)吗?这些是实用的(或纯粹的学术性的)?除了Tomita/GLR之外还有其他方法吗?

回答:

language-agnostic parser-generator

23
推荐指数
2
解决办法
3169
查看次数