Tag: 解析

Java,C ++,C#等如何利用解决这种特殊的语法歧义?

我以前认为C ++是“奇怪的”,但是在使用<和>会有一些歧义,但在尝试实现解析器后,我想我找到了一个例子,它打破了使用<和>作为generics类型的每种语言: f(g(j)); 这可以在语法上解释为generics方法调用( g ),或者可以解释为给出两个比较的结果。 这些语言(特别是Java, 我认为应该是LALR(1) – 可解决的? )如何克服这种语法模糊性? 我无法想象任何非hacky / context-free方式来解决这个问题,而且我对任何这样的语言如何无上下文感到困惑,更不用说LALR(1)-parsable …… (值得注意的是,即使是GLR解析器也无法为此语句返回单个解析而没有上下文!!)

在C#中使用ANTLR ASTs的教程?

是否有人知道在C#中使用ANTLR生成的AST的教程? 我能找到的最接近的是这个 ,但它并不是非常有用。 我的目标是根据我正在使用的特定于域的语言遍历我正在生成的树,并使用树来输出生成的C#代码。 基于Java的教程也很有帮助 – 任何提供如何遍历ANTLR AST的明确示例的东西。

如何检查Calendar实例最初是否是错误的日期

我有一个Calendar实例,通过JAXB的javax.xml.bind.DatatypeConverter.parseDateTime方法从XSD datetime解析。 在运行时,我在一个Web服务,我想知道原始xsd日期时间是否有效(月<12,日期<31,30,29,28,根据月…等)。 示例:这是有效日期: 2015-07-30T09:32:05.543+02:00 ,这不是: 2015-07-35T09:32:05.543+02:00 我试图在Web服务的实例上使用setLenient ,但是当原始日期错误时它似乎没有引发exception。 有什么办法吗? 我的猜测是告诉JAXB在global.jaxb文件中以正确的方式执行它,这是我现在使用的那个: 任何帮助,将不胜感激。 谢谢。

查询Java中的trim()方法

我早些时候问了一个问题,但遇到了严厉的批评,所以我再次提出这个问题。 更简单,并改为吸引那些可能一直关注我之前问过的人。 背景我正在解析一些HTML以获取信息。 我已经在一系列行中隔离了所有内容,但我希望抓住它的内容以及它之后的一堆空格。 为了摆脱空间,我选择使用trim(),但我一直遇到麻烦。 我的代码的最后几行是测试: System.out.println(“‘” + someString + “‘\n'” + someString.trim() + “‘”); 结果是: ‘Sophomore ‘ ‘Sophomore ‘ 我担心我可能会遇到调用trim()的方式有问题,因为我们都会不时出错,所以我测试它是这样的: String s = ” hello “; System.out.println(“‘” + s+ “‘\n'” + s.trim() + “‘”); 结果是: ‘ hello ‘ ‘hello’ 我的问题我做错了什么? 我想要的是得到’二年级学生’,而不是’二年级学生’ 我期待着您的出色答案(提前谢谢!)。

StringIndexOutOfBoundsException错误

我想解析一个数字文件。 我实现了解析,但是当我更改文件内容时,我得到一个StringIndexOutOfBoundsException。 任何帮助将不胜感激。 我的代码如下: public void fileParse() throws IOException { File f = new File(“180214.txt”); File f1 = new File(“salelog.txt”); String s = null; FileWriter fw = new FileWriter(f1); PrintWriter pw = new PrintWriter(fw); BufferedReader br = new BufferedReader(new FileReader(f)); while((s=br.readLine())!=null) { if(s.charAt(0) == ‘0’) { pw.println(“”); pw.println(s); continue; } if(s.charAt(0)==’8′) { pw.println(s); pw.println(“”); continue; […]

从文本文件中解析和读取数据

我的文本文件中的数据格式如下 apple fruit carrot vegetable potato vegetable 我想逐行读取并在第一个空格处拆分并将其存储在集合或映射或任何类似的java集合中。 (键和值对) 例如: – “apple fruit”应该存储在key = apple和value = fruit的地图中。

根据java中小括号的分组拆分复杂的String

我有一个来自UI的复杂字符串,如: (region = “asia”) AND ((status = null) OR ((inactive = “true”) AND (department = “aaaa”)) OR ((costcenter = “ggg”) OR (location = “india”))) 我需要拆分它并在我的代码中使用它,但我必须考虑括号,以便分组完全如图所示。 拆分后,我必须在每次迭代中得到类似下面的内容并将其分解 第一次: (region = “asia”) AND ((status = null) OR ((inactive = “true”) AND (department = “aaaa”)) OR ((costcenter = “ggg”) OR (location = “india”))) 第二次: (region = “asia”) AND […]

StAX XML Parser没有转义单引号(’)

我们使用StAX解析器来读取大型XML文件并剥离一些元素/属性并编写XML文件 源XML文件是有效的XML文件,即具有所有XML特殊字符( < , > , ‘ , ” , & )以相应的XML版本( < , > , ' , ' , & )进行转义& 当StaX解析器在输出文件中写入这些特殊字符时,它会转义< , > , &字符而不是’ , “字符,即在输出文件中我们可以看到’ , “字符,尽管输入文件有其转义版本 在将输出发送到StaX解析器writeAttribute方法之前String.replaceAll(“‘”,”'”)我尝试使用String.replaceAll(“‘”,”'”)方法writeAttribute 但是当StAX解析器已经转义,&字符时,输出显示为&apos; 你能让我知道在StAX解析器API中是否有任何配置/实用性来解决StAX解析器中的这个问题? 或者,或者,使用另一种解决此问题的XML编写器工具的任何其他建议?

位图OutOfMemoryError

我对这个错误有疑问。 我从URL制作favicon解析器。 我这样做: public class GrabIconsFromWebPage { public static String replaceUrl(String url) { StringBuffer sb = new StringBuffer(); Pattern p = Pattern.compile(“https?://.+\\..+?\\/”); Matcher m = p.matcher(url); while (m.find()) { sb.append(m.group()); } return sb.toString(); } public static String getFavicon(String url) throws IOException { try { Document doc = Jsoup.connect(url).get(); Element element = doc.head().select(“link[href~=.*\\.(ico|png)]”).first(); if (element != […]

使用Gson自定义反序列化到Map中

我有以下JSON: { “abc”: { “linkedTo”: “count”, // possibly more data… }, “plmtq”: { “linkedTo”: “title”, “decode”: “true”, // possibly more data… } } 我需要将这个JSON加载到Map ,使用键”abc”和”plmtq” 。 以下是我的Holder课程: public class Holder { private final Map data; public Holder(Map data) { this.data = data; } // More methods in this class… } JSON与我的类结构不匹配 ,但我无法更改JSON或类。 我需要的是一种自定义反序列化的方法,以便我可以将JSON解析为Map 。 有没有办法做到这一点? […]