Tag: 解析

Scala解析器组合器与ANTLR / Java生成的解析器?

我正在为一个主要用Scala编写的应用程序编写表达式解析器。 我在Scala中构建了AST对象,现在需要编写解析器。 我听说过Scala的内置解析器组合器,以及ANTLR3,我想知道:哪个可以提供更好的性能和编写代码的简易性? 至今: ANTLR专业人士 知名 快速 外部DSL ANTLRWorks(用于解析器语法调试/测试的优秀IDE) ANTLR缺点 基于Java(Scala互操作可能具有挑战性,任何经验?) 在运行时需要很大的依赖关系 Parser combinator专业人士 Scala的一部分 少一个构建步骤 不需要运行时依赖; 例如,已经包含在Scala的运行时库中 解析器组合器缺点 内部DSL(可能意味着执行速度较慢?) 没有ANTLRWorks(提供很好的解析器测试和可视化function) 有什么想法吗? 编辑:此表达式解析器解析代数/微积分表达式。 它将在最终确定的Android应用程序Magnificalc中使用。

从链接获取youtube id

我从www.youtube.com/watch?v=xxxxxxx这样的链接中获取了此代码以获取youtube ID URL youtubeURL = new URL(link); youtubeURL.getQuery(); 基本上这将使我很容易得到v = xxxxxxxx 但我注意到有时youtube链接会是这样的 http://gdata.youtube.com/feeds/api/videos/xxxxxx 我从一个feed获取链接,所以我需要为它构建一个正则表达式,还是一个解析器来为我得到它?

尝试在AsyncTask中解析的java.lang.StackOverflowError

上一个问题 。 在我之前的问题中,我询问了如何在AsyncTask使用AndroidSaxParser 。 所以这个问题没有对我有用的好答案,我用了一些东西。 由于标题说我的LogCat抛出一个错误,我不知道如何解决,我已经尝试了很多东西,我终于没有得到任何语法错误。 我的活动代码: package org.developerworks.android; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.content.Intent; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; public class MessageList extends ListActivity { private List messages; DownloadWebPageTask task = new DownloadWebPageTask(); @Override public void onCreate(Bundle icicle) { […]

分裂的正则表达式模式

我想解决这个问题。 ,逗号:拆分条款 “双引号:字符串值(忽略特殊字符) []数组 例如: 输入: a=1,b=”1,2,3″,c=[d=1,e=”1,2,3″] 预期产量: a=1 b=”1,2,3″ c=[d=1,e=”1,2,3”] 但我无法超越结果。 我写了下面的代码: String line = “a=1,b=\”1,2,3\”,c=[d=1,e=\”1,11\”]”; String[] tokens = line.split(“,(?=(([^\”]*\”){2})*[^\”]*$)”); for (String t : tokens) System.out.println(“> ” + t); 我的输出是: a=1 b=”1,2,3″ c=[d=1 e=”1,11″] 我需要更改什么才能获得预期的输出? 我应该坚持正则表达式还是其他解决方案更灵活,更容易维护?

读取和拆分文本文件(java)

我有一些带有时间信息的文本文件,例如: 46321882696937;46322241663603;358966666 46325844895266;46326074026933;229131667 46417974251902;46418206896898;232644996 46422760835237;46423223321897;462486660 现在,我需要文件的第三列来计算平均值。 我怎样才能做到这一点? 我需要获取每个文本行,然后获取最后一列?

如何使用一个公共属性对对象的arraylist进行排序

我有一个学生对象的arraylist,它有几个属性,包括名字和姓氏,gpa,UID(大学ID号)等。 我很难理解如何使用UID对arraylist进行排序。 UID是一个整数,但是,我不得不以字符串格式为它提供此项目。 如果我可以将数字字符串解析为int,那么如何使用该数字将arraylist从最低到最高排序?

将XML节点中的子节点拆分为自己的XML文件

我有一个XML文件(在左侧),我想创建多个文件(在右侧): file1: file2: 我试图从原始XML文件中取出第一个子节点并将其添加到新的节点,但我一直在更换节点时遇到错误。 我想做类似以下的事情 DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = dbfac.newDocumentBuilder(); Document newDocument; Node firstChild = document.getFirstChild(); NodeList childNodes = firstChild.getChildNodes(); Element parentNode; for (int i = 1; i < childNodes.getLength(); i++ ) { newDocument = docBuilder.newDocument(); parentNode = newDocument.createElement("ParentNode"); newDocument.appendChild(parentNode); newDocument.getFirstChild().appendChild(childNodes.item(i)); } 但是我收到了一个错误 org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different […]

使用Java解析HTML数据(DOM解析)

我已经研究了一段时间,并没有找到任何与Stack Overflow相关的东西。 我正在使用一个旨在捕获HTML代码片段的解析器。 基于代码(下面进一步说明),文件的大小呈指数级增长并且正在捕获我需要的字段(li),但也是非常重复的,因为它一遍又一遍地捕获相同的数据。 这是我正在阅读的文件(完整文件实际上有超过100行但这里只包括3行): Name: J0719 Description: Hop Counts: 2State: 3 Name: J0716 Description: Hop Counts: 3State: 2 Name: J0718 Description: Hop Counts: 1State: 5 Name: J0726 Description: Hop Counts: 8State: 4 我的完整代码在这里: package ReadXMLFile_part2; import java.io.*; import org.jsoup.Jsoup; import org.jsoup.select.Elements; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import java.util.Enumeration; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.text.MutableAttributeSet; import […]

从Java生成并解析文本中的“年 – 月”值

我有一个HTML弹出菜单,列出了各种年月组合。 每个菜单项具有用于内容显示的本地化字符串表示,例如Nov 2015 ,以及诸如201511的编码值的属性。 例如: Nov 2015 Oct 2015 Sept 2015 我使用java.util.Calendar生成编码值字符串。 int month = Calendar.getInstance().get(Calendar.MONTH)+1; int year = Calendar.getInstance().get(Calendar.YEAR); String v = String.valueOf( year ) + String.valueOf( month ); 这是有效的,但是当我真正关心的是没有日期或时间的年份+月份时,使用日历(日期加上一个时间)似乎很奇怪。 在现代Java中有一些更好的方法可以处理一年+一个月吗?

使用Java在HTML中转换XML + XSL

我们将数据作为XML,并且有多种格式化的XSL样式。 它在IE中工作得很好。 然后,我们需要在Chrome中显示与HTML相同的内容。 因此,我们在服务器端(Java)上发现了一个API,用于将XML + XSL转换为HTML。 public static String convertXMLXSL(String xml, String xsl) throws SQLException { System.setProperty(“javax.xml.transform.TransformerFactory”, “org.apache.xalan.processor.TransformerFactoryImpl”); TransformerFactory tFactory = TransformerFactory.newInstance(); String html = “”; try { try { StreamResult result = new StreamResult(new StringWriter()); **Transformer trans = tFactory.newTransformer(new StreamSource(new ByteArrayInputStream(xsl.getBytes(“utf-8”)))); trans.transform(new StreamSource(new ByteArrayInputStream(xml.getBytes(“utf-8”))), result);** html = result.getWriter().toString(); } catch (TransformerException te) { te.printStackTrace(); […]