是否可以从R中解析PDF文件中的文本数据?有没有出现是一个相关包这样的提取,但有没有人尝试或见于读该怎么办?
在Python中有PDFMiner,但我想在可能的情况下将此分析保留在R中.
有什么建议?
大约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) LL解析器比LR解析器有什么优势可以保证它们在今天的解析器生成器工具中相对流行?
根据维基百科,LR解析似乎比LL更有优势:
LR解析可以处理比LL解析更大范围的语言,并且在错误报告方面也更好,即它在输入不尽快符合语法时检测语法错误.这与LL(k)(或甚至更糟的LL(*)解析器)形成对比,LL(k)可能由于回溯而将错误检测推迟到语法的不同分支,通常使错误难以在具有长公共前缀的分离上进行本地化. .
注意:这不是作业.当我发现Antlr是一个LL解析器生成器(尽管名字中有"LR")时,我感到很惊讶.
在PHP中是否有Lex和Yacc的实现?
如果没有,任何人都可以建议一个词法分析器和解析器生成器(即Lex和Yacc之类的东西)来创建PHP代码.我不太担心生成的解析器的性能.
我厌倦了使用正则表达式解析真正不应该用正则表达式解析的东西......
要学习如何编写和解析无上下文语法,我想选择一个工具.对于Haskell,有两个很大的选项:Happy,它从语法描述中生成解析器,以及*Parsec,它允许您直接在Haskell中编写解析器代码.
这两种方法的(dis)优势是什么?
我的问题是关于Scala解析器:
我发现至少这些:
我正在寻找一个解析器生成器,给出一个LL(k)语言的EBNF将给我一个C#解析器并生成EBNF中定义的类型的类.
我正在编写一个GLR解析器生成器,并希望在互联网和死树种类(不熟悉极客说话的人的书籍)上提供有关此算法相关资源的建议.
我知道Bison可以生成GLR解析器,并且考虑到它在GPL下我可以检查它的代码,但是对它有一个完整的算法描述会很好.
那么,有没有人知道我可以利用的任何好资源?谢谢.
序言:虽然解析器识别的语言集(无上下文语法)严格大于扫描程序(常规语法),但大多数解析器生成器都需要扫描程序.
(请不要试图解释其背后的原因,我非常了解它们).
我见过解析器,不需要扫描仪
使用无扫描仪有一些优点:
通常,使用"解决方法"就像在解析器的请求上切换扫描程序一样.
问题:你知道其他任何无扫描器解析器生成器(任何语言)吗?这些是实用的(或纯粹的学术性的)?除了Tomita/GLR之外还有其他方法吗?
回答:
parser-generator ×10
parsing ×5
haskell ×2
parsec ×2
boost ×1
boost-spirit ×1
c# ×1
c++ ×1
f# ×1
glr ×1
happy ×1
lalr ×1
lex ×1
ll-grammar ×1
lr-grammar ×1
pdf ×1
php ×1
r ×1
scala ×1
yacc ×1