Questions tagged «parsing»

分析(非)结构化数据以将其转换为结构化标准化格式。

5
CSV格式可以由正则表达式定义吗?
我和一位同事最近就纯正则表达式是否能够完全封装csv格式进行了争论,以便它能够使用任何给定的转义字符,引号字符和分隔符char解析所有文件。 正则表达式不必在创建后就可以更改这些字符,但在任何其他情况下都不能失败。 我认为,这对于令牌生成器来说是不可能的。唯一能够做到这一点的正则表达式是一种非常复杂的PCRE样式,它不仅限于标记化。 我正在寻找以下方面的东西: ... csv格式是上下文无关的语法,因此,不可能仅使用正则表达式进行解析... 还是我错了?是否可以仅使用POSIX正则表达式来解析csv? 例如,如果转义字符和引号字符均为",则这两行都是有效的csv: """this is a test.""","" "and he said,""What will be, will be."", to which I replied, ""Surely not!""","moving on to the next field here..."

5
解析器组合器是否将单独的解析和词法传递为良好实践?
当我开始使用解析器组合器时,我的第一个反应是从感觉上像是在解析和词法化之间的人为区别中解放出来。突然所有的一切都只是解析! 但是,我最近在codereview.stackexchange上发现了此帖子,说明有人在恢复这种区别。起初我以为这对他们很愚蠢,但是后来Parsec中存在支持这种行为的功能这一事实使我开始质疑自己。 在解析器组合器中对已经词法化的流进行解析有什么优点/缺点?

2
编译器是否利用多线程来加快编译时间?
如果我正确地记住了我的编译器课程,那么典型的编译器将具有以下简化的轮廓: 词法分析器逐字符扫描(或调用某些扫描功能)源代码 根据词素词典检查输入字符的字符串是否有效 如果lexeme有效,则将其分类为与其对应的令牌 解析器验证令牌组合的语法;逐个令牌。 从理论上讲,将源代码分成四分之一(或其他分母)并在扫描和解析过程中使用多线程是否可行?是否存在利用多线程的编译器?

3
使用策略模式的Java通用文件解析器设计
我正在开发一种产品,其中一个模块的职责是解析XML文件并将所需内容转储到数据库中。即使目前的要求只是解析XML文件,我仍希望以一种将来可以支持任何类型文件的方式设计解析模块。采用这种方法的原因是,我们正在为特定客户生产该产品,但计划在不久的将来将其出售给其他客户。当前客户端的生态系统中的所有系统都会生成和使用XML文件,但其他客户端可能并非如此。 到目前为止,我尝试了什么?(现在) 我想到的是基于策略模式的以下设计。我很快就用eclipse编写了代码以传达我的设计,因此,如果暂时忽略其他方面(如正确的异常处理方式),那将是很好的选择。 Parser:公开解析方法的策略接口。 public interface Parser<T> { public T parse(String inputFile); } *使用泛型参数的原因是允许任何返回类型以及在编译时确保类型安全。 ProductDataXmlParser一个具体类,用于解析包含产品相关信息的product.xml文件。(使用XMLBeans) public class ProductDataXmlParser implements Parser<ProductDataTYPE> { public ProductDataTYPE parse(String inputFile) { ProductDataTYPE productDataDoc = null; File inputXMLFile = new File(inputFile); try { productDataDoc = ProductDataDocument.Factory.parse(inputXMLFile); } catch(XmlException e) { System.out.println("XmlException while parsing file : "+inputXMLFile); …
14 java  design  parsing  xml 

5
提出词法分析器标记
我正在为我创建的标记语言编写一个解析器(用python编写,但这与这个问题并不相关-实际上,如果这似乎是一个坏主意,我希望有一个更好的建议) 。 我在这里了解有关解析器的信息:http : //www.ferg.org/parsing/index.html,并且我正在编写词法分析器,如果我理解正确的话,应将内容拆分为标记。我无法理解的是我应该使用哪种令牌类型或如何创建它们。例如,我链接到的示例中的令牌类型为: 串 识别码 数 白空间 评论 紧急行动 许多符号,例如{和(算作自己的标记类型 我遇到的问题是,更通用的令牌类型对我来说似乎有些武断。例如,为什么要STRING自己使用单独的令牌类型,而不要使用IDENTIFIER。字符串可以表示为STRING_START +(IDENTIFIER | WHITESPACE)+ STRING_START。 这也可能与我的语言困难有关。例如,变量声明编写为,{var-name var value}并使用进行部署{var-name}。看起来'{'并且'}'应该是它们自己的令牌,但是VAR_NAME和VAR_VALUE是否符合令牌类型,或者这两者都属于IDENTIFIER吗?而且,VAR_VALUE实际上可以包含空格。after后面的空格var-name用于表示声明中值的开始。其他任何空格都是该值的一部分。这个空格会成为自己的令牌吗?在这种情况下,空白仅具有该含义。而且,{可能不是变量声明的开始..它取决于上下文(再次有该词!)。 {:开始一个名称声明,然后{ 甚至可以用作某些价值的一部分。 我的语言与Python类似,因为代码块是使用缩进创建的。我正在阅读有关Python如何使用词法分析器创建INDENT和DEDENT令牌的信息(它们或多或少的作用{以及}在许多其他语言中的作用)。Python声称是无上下文的,这对我来说意味着,至少词法分析器在创建令牌时不必关心它在流中的位置。Python的词法分析器如何在不知道先前字符的情况下就知道要构建特定长度的INDENT令牌(例如,上一行是换行符,因此开始为INDENT创建空间)?我问,因为我也需要知道这一点。 我的最后一个问题是最愚蠢的问题:为什么一个词法分析器甚至是必要的?在我看来,解析器可以逐个字符地找出它在哪里以及它期望什么。词法分析器是否增加了简单性的好处?
14 python  parsing  lexer 


5
CSV解析器的单元测试
我应该使用哪些测试对csv解析器进行单元测试? 我在C#中有一个简单的csv解析器,并且我想确保我对所有常见(和不常见)边缘情况都具有良好的单元测试覆盖率。我应该使用哪些测试来识别潜在问题和边界案例?
14 testing  parsing 


5
如何最好地管理公司机密研究代码的开放源代码发布?
我公司(简称为Acme Technology)拥有大约一千个源文件库,这些文件最初来自其Acme Labs研究小组,在一个开发小组中孵化了几年,最近已提供给少数客户。非公开。Acme已准备好向开源社区发布大约75%的代码。其余25%将在以后发布,但是目前,要么尚未准备好供客户使用,要么包含与未来创新相关的代码,他们需要将这些创新保持在竞争对手的控制之下。 目前,该代码已使用#ifdefs格式化,该代码库允许相同的代码库与预生产平台一起使用,一旦开源,该研究平台将可供大学研究人员和更广泛的商业客户使用,同时可用于实验和原型设计以及与未来平台的向前兼容性测试。对于我们小组的经济(和理智)而言,保持单一代码库被认为是至关重要的,因为他们很难同时维护两个副本。 当前库中的文件如下所示: > // Copyright 2012 (C) Acme Technology, All Rights Reserved. > // Very large, often varied and restrictive copyright license in English and French, > // sometimes also embedded in make files and shell scripts with varied > // comment styles. > > > ... …

6
什么是最简单的人类可读配置文件格式?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 当前配置文件如下: mainwindow.title = 'test' mainwindow.position.x = 100 mainwindow.position.y = 200 mainwindow.button.label = 'apply' mainwindow.button.size.x = 100 mainwindow.button.size.y = 30 logger.datarate = 100 logger.enable = True logger.filename = './test.log' 使用python将其读取到嵌套字典中: { 'mainwindow':{ 'button':{ 'label': {'value':'apply'}, ... }, 'logger':{ datarate: {'value': 100}, enable: {'value': True}, filename: {'value': './test.log'} }, …

2
坚持自然语言处理解析数据
我最近开始使用斯坦福大学的CoreNLP进行自然语言处理(NLP)的实验,并且想知道为文本挖掘应用程序之类的东西存储NLP解析数据的一些标准方法是什么? 我认为可能有趣的一种方法是将子级存储为邻接列表,并充分利用递归查询(Postgres支持此功能,我发现它确实很好用)。 但我认为,根据多年来从事该领域工作的人员所进行的分析类型,可能有许多标准方法可以执行此操作。那么NLP解析数据的标准持久性策略是什么?如何使用它们?

3
如何为解析器指定语法?
我已经进行了很多年的编程,但是仍然需要花费我很长时间的一项任务是为解析器指定语法,即使付出了如此多的努力,我也永远无法确定我想出的语法是否很好(以任何合理的方式衡量“良好”)。 我不希望有一种算法可以自动执行指定语法的过程,但是我希望有一些结构化问题的方法可以消除当前方法的大部分猜测和反复试验。 我的第一个念头是阅读解析器,而我已经做了一些,但是我在该主题上阅读的所有内容都将语法视为既定的(或者琐碎到可以通过检查指定的语法),并专注于将这个语法翻译成解析器的问题。我对之前的问题很感兴趣:首先如何指定语法。 我主要对指定一个正式代表具体示例(正例和负例)的语法的问题感兴趣。这与设计新语法的问题不同。感谢Macneil指出了这一区别。 我从来没有真正欣赏过语法和语法之间的区别,但是现在我开始明白它了,我可以通过说我主要对指定语法来强制执行一个语法的问题来加强我的第一说明。预定义的语法:就我而言,这种语法的基础通常是肯定和否定示例的集合。 如何为解析器指定语法?是否有一本书或参考资料是事实上的标准,用于描述最佳实践,设计方法以及有关为解析器指定语法的其他有用信息?在阅读解析器语法时,我应该重点注意什么?

2
用外行的话来说,剩下的递归是什么?
根据code.google.com上的一页,“左递归”的定义如下: 左递归只是指任何递归非终结符,当它产生包含自身的语句形式时,其自身的新副本出现在生产规则的左侧。 维基百科提供了两种不同的定义: 就上下文无关文法而言,如果非r产生的任何产品(“替代”)中的最左符号立即(直接/直接向左递归)或通过其他一些非终结符,则该非终结r是左递归定义(间接/隐藏的左递归)再次重写为r。 “如果我们能找到一些非终结符A,那么语法将是左递归的,它最终会得出一个以其自身为左符号的句子形式。” 我只是在这里刚开始进行语言创建,而我在业余时间做。然而,当它归结为选择语言解析器,无论是左递归被该分析器或支持该分析器是一个问题马上来了前沿和中心。查找诸如“句子形式”之类的术语只会引出更多行话,但是“左”递归的区别几乎必须非常简单。请翻译?

3
使用HL7消息时会出现什么问题?
我正在为医疗保健企业测试产品,我们正在处理HL7消息。我看到人们抱怨关于HL7的另一个问题,但没有提及具体细节。有人可以给我一些关于我们应该专门寻找哪些问题或问题类别的想法吗? 我们正在使用一些常用的库进行解析。如果有关这些细节或我们正在做的事情会有所帮助,请在评论中让我知道,如果可以的话,我将补充问题。
12 testing  parsing  hl7 

2
具有两个相同优先级的二进制运算符的语言,左关联和右关联
是否有任何编程(或脚本)语言(或某些特定领域的语言)具有两个二进制运算符,opl并且opr具有相同的优先级(opl左关联和opr右关联)? (我找不到这样的示例,但是我正在尝试编写一些足以解析这种奇怪情况的解析器) 如何解析x opl y opr z或x opr y opl z形式的表达式?更一般地说,甚至还有更多的操作数?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.