相关疑难解决方法(0)

词法分析者与解析者

词法分析器和解析器在理论上真的有那么不同吗?

讨厌正则表达式似乎很时髦:编码恐怖,另一篇博客文章.

然而,流行的基于乐兴的工具:pygments,geshi或者美化,都使用正则表达式.他们好像有什么东西......

什么时候足够兴奋,什么时候需要EBNF?

有没有人使用这些词法分析器生成的令牌与野牛或antlr解析器生成器?

parsing antlr lexer pygments

299
推荐指数
6
解决办法
10万
查看次数

为什么不能用LR(1)解析器解析C++?

我正在阅读解析器和解析器生成器,并在维基百科的LR解析页面中找到了这个语句:

可以使用LR解析器的一些变体来解析许多编程语言.一个值得注意的例外是C++.

为什么会这样?C++的哪个特定属性导致无法使用LR解析器进行解析?

使用谷歌,我只发现C可以用LR(1)完美解析,但C++需要LR(∞).

c++ grammar parsing formal-languages

147
推荐指数
6
解决办法
3万
查看次数

用于全文的Tokenizer

这应该是不重新发明轮子的理想情况,但到目前为止,我的搜索一直是徒劳的.

我不想自己写一个,而是想使用现有的C++标记器.令牌将用于全文搜索的索引中.性能非常重要,我将解析许多千兆字节的文本.

编辑:请注意,令牌将用于搜索索引.创建这样的令牌并不是一门精确的科学(afaik),需要一些启发式方法.这已经做了一千次,可能有千种不同的方式,但我甚至找不到其中一个:)

有什么好的指针吗?

谢谢!

c++ full-text-search tokenize

17
推荐指数
2
解决办法
3684
查看次数

用于文本解析的 DSL

我有一组特定领域的半结构化文本文档(会计报告),它们的内容非常相似。但是,数据在每个文档模板上的处理方式不同。

编写一些正则表达式并获取我想要的数据相当容易。但必须对每个新文档布局进行此操作。

我想构建一个通用解析器,它接收一个脚本,说明如何读取特定布局的会计报告,这样对于每个新布局,我需要做的就是编写一个新脚本,这比编写大量正则表达式更简单。

像这样的东西:

解析脚本:

declare collection_name {
  date,
  description,
  amount
}

get customer_name from line 3
get account_id from "AccountID <number>"

read data as <collection_name> from <pattern> until <pattern>
Run Code Online (Sandbox Code Playgroud)

请给我任何线索,告诉我从哪里开始,阅读了哪些内容,或者您​​是否已经看过类似的内容。我真的很感激任何帮助。

php regex dsl parsing

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

解析Python函数声明

为了为我的 Python 代码编写自定义文档生成器,我想编写一个能够匹配以下内容的正则表达式:

def my_function(arg1,arg2,arg3):
"""
DOC
"""
Run Code Online (Sandbox Code Playgroud)

我当前的问题是,使用以下正则表达式:

def (.+)\((?:(\w+),)*(\w+)\)
Run Code Online (Sandbox Code Playgroud)

我只能匹配my_function, arg2and arg3(根据 Pythex.org)。

我不明白我做错了什么,因为我(?:(\w+),)*应该匹配尽可能多的参数,直到最后一个(此处arg3)。有人能解释一下吗?

谢谢

python regex

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