h*i 发帖数: 3446 | 1 我在弄一个关于Information Visualization的domain specific language (DSL),语
法大致像SQL的样子,但没写过parser,有什么建议么? |
|
e*****r 发帖数: 379 | 2 有编过lexer/parser generator 的大牛没有?帮忙看看cmake的lexer.没看懂。脸红中
。 跟java/C#比起来,C++/C 真是稀奇古怪的恐龙级别的语言。 |
|
W***o 发帖数: 6519 | 3 就是只知道第一层的field names, 根据这些parse 成一个hash table.
在retrieve value 的时候只提供第一层的field name, 取出来的再继续找第二层的
field name, 但是在一开始是不知道第二或第N层有什么field. 最好是java的库
有这样的blind parser吗 |
|
l**h 发帖数: 893 | 4 【 以下文字转载自 JobHunting 讨论区 】
发信人: babyfacenan (黑土), 信区: JobHunting
标 题: 实现一个parser可以解析给定的几种sql语句,怎么做?
发信站: BBS 未名空间站 (Wed Sep 23 02:44:52 2015, 美东)
需要写现场可以运行的代码
求思路
用什么数据结构
比如说有下面的数据 和 sql query, 让输出结果
String[][] data = {
{ "id", "gender", "age", "job" },
{ "1", "male", "10", "yes" },
{ "2", "female", "20", "no" },
{ "3", "male", "30", "yes" }, };
String query = "select id, gender, age from table where gender = male"; |
|
n*****t 发帖数: 22014 | 5 var input = "select id, gender, age from table where gender=male";
function parser(input) {
var select_sentence = /select\s+(.+)\s+from\s+(\w+)\s+where\s+(.+)/i;
var match = select_sentence.exec(input);
if (match)
return parse_select({
fields : match[1],
table_name : match[2],
condition : match[3]
});
} |
|
b*******s 发帖数: 5216 | 6 可以用类厂实现,写个几千种估计够了,每次系统崩溃发现新语句了就加一个新类,在
别人写parser时,你的bug都改了几百个了 |
|
|
|
|
d***a 发帖数: 57 | 10 XML Parser 究竟是干什么用的? 它是一个独立的应用程序还是一个插件?
它的输入和输出分别是啥?
Thanks. |
|
s****s 发帖数: 2163 | 11
input xml document (text file in xml) , output some object, depends on
parser. |
|
b*****t 发帖数: 154 | 12 I am new to xml. I am now try to download a xml parser, eg. expat. But
I don't know how to use it. Can anyone give some advice? Thanks. |
|
b****e 发帖数: 1275 | 13 i mean the java parsers.. provided by ibm.. sun.. etc.. pros and cons? |
|
d*****r 发帖数: 18 | 14 Which is the best xml parser for java?
I installed JAXP but I don't like the idea of using
com.sun.* package to generate a xml file. Who can recommend
a better one? Thanks, |
|
s******n 发帖数: 22 | 15
to parse an .xml into a DOM, try
DOMParser in org.apapche.xerces.parsers
to serialize the DOM back to .xml, try
XMLSerialize in org.apache.xml.serialize
sure there are also tools dealing with SAX or so.
http://xml.apache.org/xerces-j/index.html |
|
b****e 发帖数: 1275 | 16 has anyone done a benchmark about performance of different parsers
on the markert? like ibm, sun, etc etc?
just curious :) |
|
a*****a 发帖数: 438 | 17 don't know.. I just trust MSXML.dll (ms's parser) is best.
It's currently version 3.0 |
|
j**o 发帖数: 61 | 18 I need a xml parser in java. anyone can give me a good
suggestion. Thanks |
|
w*****h 发帖数: 28 | 19 Does anyone has some suggestion about DTD Parser?
I just got one from online named Jato. |
|
e***c 发帖数: 68 | 20 I think most of the parser support schema validation,XSD files should also have
DTD such that it is well formed. |
|
i*****t 发帖数: 220 | 21 Do you guys think MS XML parser which is included inside IE is good/convenient
to use? How about its work compared with Xerces? Thanks. //Thank the two
brothers answering the previous question. |
|
w*****e 发帖数: 4 | 22 Except RXP, Anything else.
By the way, Why none write LALR(1) XML parser? Apparently XML grammar is
at least LALR(1) grammar.
Thanks |
|
i*****t 发帖数: 220 | 23 I will choose XML parser API to breat/parse XML document. If the XML
documents are not long, I should choose to use DOM because it is simple for
coding, right? Thanks. |
|
o*******m 发帖数: 8 | 24
You can use parser from Oracle, IBM or Sun(JAXP) |
|
|
h*i 发帖数: 3446 | 26 Basically, I want to use clojure. There are a few parser generators written
in idiomatic clojure, but are too young to be usable.
I have now decided to just use ANTLR to generate the AST, and work with the
AST in clojure.
Hey, you are the one who quited my club, right? Why quit? It's just a place
to share ideas. |
|
l*******s 发帖数: 1258 | 27 没必要自己从头实现from scratch
基本功能:有些半成品。比如sphinx,你可以用来训练自己的语音模型。另外,还需要
语言模型language model,可以考虑现成的比如Srilm。
高级功能:这个关键处在于如何把一个自然语言的句子变成machine readable的句子,
比如first order logic。一些思路:可以考虑parser,就是先把一个句子变成句法树
,然后根据phrase structure information来map到first order logic,执行程序命令
。parser可以考虑Berkeley parser, Stanford parser, OpenNLP parser等;或者考虑
dependency parser,或许比phrase structure parser更有用,比如Stanford parser
,malt parser等,甚至可以用semantic parser,这个需要自己实现。
总之就是,每一步都有现成的工具包,就看你怎么攒到一块,效果还好。这里面很多地
方需要自己去training,tuning。
至于... 阅读全帖 |
|
y***d 发帖数: 2330 | 28 把 parser.c "放到我其他的C++程序中" 这个做法是不好的,应该是把 parser.h 包含
到其它 .c/.cpp 文件中,
而 parser() 的函数体可以在 .c 中,也可以在 .cpp 中,
1. in c
parser.h
#ifdef _cplusplus
extern "C"{
#endif
void parser();
...
and complie parser.c with gcc
2. in cpp
parser.h
void parser();
and compile parser.cpp with g++
libxml2, |
|
t******n 发帖数: 2939 | 29 ☆─────────────────────────────────────☆
xiongyp (dreamrain) 于 (Fri May 24 08:41:56 2013, 美东) 提到:
我们假设不知道什么叫素数,我们对正整数集合进行如下的定义来定义素数。(这是从
链接上取下来的,也是I63的定义)
(1) 1不是素数 (base case)
(2) a是素数当且仅当a不能被任何小于它的素数整除。
我曾经多次指出,这个定义在用素数定义素数,是不正确的。但看到很多的反驳如下。
1不是素数, 我们考察2,发现小于2的素数集合为空集,于是2为素数。以此再往下递归
,得出所有素数的定义。我想昨天深入讨论此内容的人,都不会反对我的总结吧。关于
"小于2的素数集合为空集"推出"2为素数",因我的不慎,还做出过郑重道歉。
好,我们仿造这种递归定义,来定义偶数。
我们假设不知道什么叫偶数,我们对非负整数集合进行如下的定义来定义偶数。
(1) 0不是偶数 (base case)
(2) a是偶数当且仅当a与任何小于它的偶数之差为2的倍数。
我从base case开始。0不是偶数。我们考察... 阅读全帖 |
|
d**d 发帖数: 389 | 30 比如我已经用C写好了几个独立的函数去处理一个xml文件,调用的库是现有的libxml2,
这个是标准的C library.
在parser.c中,
#include
#include
#include
void parser();
1. 如果我把这个文件放到我其他的C++程序中,还是parser.c,那么在调用G++编译的
时间,parser.c就要变成
#ifdef _cplusplus
extern "C"{
endif
void parser();
#ifdef _cplusplus
}
#endif
是这样吧?
2. 如果我重新生成一个parser.cpp文件:
#include
#include
#include
void parser();
这样的话,用g++来编译就没有问题了?
谢谢。 |
|
c****r 发帖数: 185 | 31 The performance of a parser generator is far less important than that of the
parser it generates. Most parser generators take just a few seconds to
generate a parser. In practice, LL parsers like antlr javacc seem more
popular than LR parsers. If you are doing research, I doubt if you can
motivate your problem. |
|
w*****s 发帖数: 122 | 32 Q6: Is XML::Parser object oriented?
In short, yes. XML::Parser is a factory object that creates instances of
XML::Parser::Expat as needed.
Q7: Is XML::Parser based on the SAX API?
Nope. XML::Parser is based on Expat, a non-validating parser written in
C by James Clark. However, Eric Prud'hommeaux has developed a preliminary
implementation, W3C::SAX::XmlParser, which can be found at http://www.w3
.org/1999/02/26-modules/. Note that this implementation is not final since
Ken
Ma |
|
e***c 发帖数: 68 | 33 Parser: SAX Parser->Event Drive
So you define the process when those element, space, attribute, etc happens.
DOM Parser->Node, easy for reading and writing.
So if you want to get the element from XML, if just once, SAX is fine. If you
want to modify it, maybe DOM is better, but it require more memory.
Check www.apache.org for detail.
DTD/schema defines the data type you defined in XML file. It confines the formate
t of XML file.
For parsers, xalan->parser+transformation
Xerecs->parser+schema+... |
|
c****x 发帖数: 6601 | 34 http://www.yinwang.org/blog-cn/2017/05/17/practical-idealism
曾经有人看了我的文章,以为我是一个“理想主义者”,来找我聊天。他说:“你知道
吗,我跟你一样喜欢干净优雅的代码。上次我在某公司工作,看到他们的代码乱得不成
样子,二话没说就给他们推翻重写了,结果有几个小地方跟原来的代码不大一样,后来
系统因此当掉了。老板对我说,明天你不用再来上班了!你说我是不是好心没好报啊?”
虽然我同情他丢了工作,然而我并不认同这种不经同意就把别人的代码推翻重写的作法
。我对他说:“哈哈,你不可以这样改别人的代码的!如果我是你老板,虽然可能不会
开掉你,却也会给你一个严重警告的。”
从我们的对话你也许已经发现了,我并不是一个通常人所谓的“理想主义者”。虽然我
有很多新颖而美好的想法,然而它们每一个都深深地植根在现实中。我反对一切不以现
实为基础的“理想”,我往往在很早的时候就发现和避免那些最终会失败的“理想主义
作法”。
如何对待别人的代码
那么我是如何对待别人的“垃圾代码”的呢?你也许会很惊讶我的做法:我尽量不动它
们!
虽然我喜欢干净优雅的代... 阅读全帖 |
|
c*****t 发帖数: 1879 | 35 如果让你写个很简单的 XML Parser,就是 load 一些 plugin class,比如
...
稍微会点 XML / DOM 的就能在 50 行以内手写一个。
不过,如果再加一条,有些 plugin 只能在 Java3D 下工作,希望只有在
Java3D 存在的情况下,load 这些 plugin。比如
...
加这个也不难。不过,这里就出现个问题。简单的解决方法就会造成该
parser 对 Java3D 的依赖。这里不是指 parser 必须用到 Java3D 的
library,而是写 parser 的人必须事先考虑到 Java3D。这就是一般 parser
的短处。高 |
|
T*******x 发帖数: 8565 | 36 nlp的方法我大概看过一些介绍,是有从parser这里入手的,还有其他方法。从parser
入手我觉得可能是比较根本的方法。人类语言都是模糊语法,如何能写出模糊parser就
是关键。写出模糊parser和理解语义,这两个可能是相辅相成的问题。 |
|
c*****e 发帖数: 3226 | 37 【 以下文字转载自 CS 讨论区 】
发信人: biochemputer (Pandora Box), 信区: CS
标 题: orz, 王垠骂完了五道口伊萨卡现在开始骂Google了
发信站: BBS 未名空间站 (Fri Aug 10 17:53:39 2012, 美东)
纯转载
---
http://blog.sina.com.cn/s/blog_5d90e82f010191rh.html
---
我和Google的故事 (2012-08-10 02:58:52)转载▼
分类: 杂谈
也许有人看见过我批判 Google 的那篇英文文章。它有一部分片面性,所以被我从英文
博客上拿下来了。我一直在反思自己在 Google 的经历,也许现在用自己的母语,我可
以得出一个准确一点的结论吧。
也许有人觉得作为一个读了这么多年的 PhD 去给别人做实习生(intern)是一种耻辱
,但是我亲眼看到,从一些名校比如 Yale 毕业的 PhD,在 Google 混了好几年,也不
过是过着差不多的生活。只不过做了 intern 之后我长了经验,知道了自己的价值,以
后不至于落到同样的位置。
这里... 阅读全帖 |
|
c*******h 发帖数: 1467 | 38 也许有人看见过我批判 Google 的那篇英文文章。它好像有一部分片面性,所以被我从
英文博客上拿下来了。我一直在反思自己在 Google 的经历,因为在这个公司工作总是
感觉不对劲,但是却总也说不清楚为什么。也许现在用自己的母语,我可以得出一个准
确一点的结论吧。
受命于危难
先说说我的项目是怎么开始的吧。当我加入的时候,我的老板 Steve Yegge 的小组试
图制造一个跨语言的“服务式”编程工具,叫做 Grok。你可以把它想象成 Eclipse 和
Visual Studio, 但是 Grok 的设计目标不只是检索和分析本机的某一种语言的代码,
而是大规模的检索和分析 Google 的所有项目,所有语言,所有代码。这包括 Google
的“四大语言”:C++, Java, JavaScript, Python,一些工具性的语言:Sawzall,
protobuf 等,还有一些“build file”和所有第三方的库。Grok 的初期设计目标是一
个静态的代码索引服务,只要程序员点击任何一个变量或者函数名,就能“准确”的跳
转到它定义的位置。动态的编辑功能稍后也在陆续加入。
这种... 阅读全帖 |
|
g*********e 发帖数: 14401 | 39 也不是没有。做eda 要用递归和dp,还有topi sort
做parser (不一定是编程语言的parser,sql parser或者自己invent出来的query
language parser) 要用递归。
二叉树就更多了。做ml, 要搞一个压缩boosting tree的算法 那就是leetcode里serdes
二叉树。
反正做后端的话,每家公司都会遇到类似的活,多多少少
打你 |
|
l*****8 发帖数: 16949 | 40 呵呵,BNF就是Context-free grammar的一种。这种BNF定义出来语言就是context-free
language.
LALR parser是用context free grammar去match一个字符串的一种办法。并不是所有的
CFG语法都能用LALR parser的。只有DCFL (deterministic context-free language)才
能用LALR parser.用LALR的原因是它用的时间是线性的。如果不加限制的CFG,分析的时
间可能会是指数时间。在数学上总是能够parse出来的,但不能用在实际中。这样的话
编译一个大点的程序可能需要天文时间。
总之LALR parser能处理的语言只是形式语言(formal language)里一个极小极小的子集。 |
|
t******n 发帖数: 2939 | 41 ☆─────────────────────────────────────☆
l63 (l63) 于 (Thu May 23 00:34:22 2013, 美东) 提到:
假设素数只有有限个, 记为 p_1,p_2,...,p_k
考察 N = p_1*p_2*...*p_k + 1
可知: 对于任意i = 1,2,3,...,k, p_i 不能整除 N
由素数的定义:
a是素数 <=> a是大于1的自然数, 且a不被任何小于a的素数整除
可知: N是素数
这与素数只有p_1,p_2,...,p_k矛盾.
故假设不成立.
所以素数有无穷多个.
☆─────────────────────────────────────☆
l63 (l63) 于 (Thu May 23 00:37:03 2013, 美东) 提到:
在承认素数的这个等价定义 (即 a是素数 <=> a是大于1的自然数, 且a不被任何小于a
的素数整除) 的前提下, 居然有人会认为这个证明是错的, 或者是不完备的.
我实在不能理解.
求问一下大家, 是不是有的人的脑子天生有缺陷, 根本怎么教都不会明白... 阅读全帖 |
|
b**********r 发帖数: 91 | 42 纯转载
---
http://blog.sina.com.cn/s/blog_5d90e82f010191rh.html
---
我和Google的故事 (2012-08-10 02:58:52)转载▼
分类: 杂谈
也许有人看见过我批判 Google 的那篇英文文章。它有一部分片面性,所以被我从英文
博客上拿下来了。我一直在反思自己在 Google 的经历,也许现在用自己的母语,我可
以得出一个准确一点的结论吧。
也许有人觉得作为一个读了这么多年的 PhD 去给别人做实习生(intern)是一种耻辱
,但是我亲眼看到,从一些名校比如 Yale 毕业的 PhD,在 Google 混了好几年,也不
过是过着差不多的生活。只不过做了 intern 之后我长了经验,知道了自己的价值,以
后不至于落到同样的位置。
这里我就讲述一下我在 Google 的实习经历吧,也许对人有参考作用。
受命于危难
先说说我的项目是怎么开始的吧。当我加入的时候,我的老板 Steve Yegge 的小组试
图制造一个跨语言的“服务式”的编程工具,叫做 Grok。你可以把它想象成 Eclipse,
但是 Grok 的... 阅读全帖 |
|
b**********r 发帖数: 91 | 43 纯转载
---
http://blog.sina.com.cn/s/blog_5d90e82f010191rh.html
---
我和Google的故事 (2012-08-10 02:58:52)转载▼
分类: 杂谈
也许有人看见过我批判 Google 的那篇英文文章。它有一部分片面性,所以被我从英文
博客上拿下来了。我一直在反思自己在 Google 的经历,也许现在用自己的母语,我可
以得出一个准确一点的结论吧。
也许有人觉得作为一个读了这么多年的 PhD 去给别人做实习生(intern)是一种耻辱
,但是我亲眼看到,从一些名校比如 Yale 毕业的 PhD,在 Google 混了好几年,也不
过是过着差不多的生活。只不过做了 intern 之后我长了经验,知道了自己的价值,以
后不至于落到同样的位置。
这里我就讲述一下我在 Google 的实习经历吧,也许对人有参考作用。
受命于危难
先说说我的项目是怎么开始的吧。当我加入的时候,我的老板 Steve Yegge 的小组试
图制造一个跨语言的“服务式”的编程工具,叫做 Grok。你可以把它想象成 Eclipse,
但是 Grok 的... 阅读全帖 |
|
l********r 发帖数: 140 | 44 Hi,
I am using HTMLEditorKit trying to parse a html.
My purpose is to get the text content of a HTML file, and also the URLs
in this HTML file. But how can I do it?
I saw a demo file looks like (where r is the html file):
HTMLEditorKit.Parser parser;
System.out.println("About to parse " + spec);
parser = new ParserDelegator();
parser.parse(r, new HTMLParseLister(), true);
The above code output everything to screen. I think I should replace
the "new HTMLParseLister |
|
r*********r 发帖数: 3195 | 45 after reading the Xcode 4 marketing stuff, now i'm pretty sure
"apple llvm" = Clang front-end parser + llvm back-end
for Xcode 3, the stack is gcc front-end parser + llvm back-end
Clang parser compiles faster than the gcc parser,
only because it doesn't do as much work !
the compiled code quality is actually worse. (the executable
runs slower) The advantage is that by doing less, the output is
easier to understand, both by human and by IDE. |
|
m**i 发帖数: 89 | 46
你所知甚少。IBM有IBM的Java XML Parser,Oracle有Oracle的Java XML
Parser。它们都是免费的。另外还有个非常出名的东西,Apache Software
Foundation(ASF)的Xerces-J,也是纯Java的XML Parser。我用过Oracle的
和Xerces-J。前者和Oracle集成得很好,导出的类比较适合其BC4J的处理。
后者支持Schema Draft,处理能力较强。
用Java实现的XML Parser多了去了,这里只说了三个比较有名的。 |
|
d*****r 发帖数: 18 | 47 amnesia, thank you for your help!:)
Now I have to work hard on this xml parser.:(
When I was looking for the parsers, I found one named
"Expat" which
is a C parser. But it's an old parser and not so strong. |
|
P*****x 发帖数: 72 | 48 I don't know if there is way to validate XML file against schema w/o parser.
If using parser is ok w/ ur situation, u can find a parser and reference
at apache.org
To check bugs in schema is easy, if you have visual studio .net, just
load it into ide.
I am not expert of XML either but I happen to mess w/ apache C++ parsers
a lot. |
|
b*******s 发帖数: 5216 | 49 #!/usr/bin/env /usr/bin/python3
import sys, os, argparse, shutil
templates_dir = os.path.expanduser('~') + '/templates/'
cwd = os.getcwd() + '/'
py_templates = ['empty.py']
cpp_templates = ['empty.h','empty.cpp']
test_templates = ['Makefile','main.cpp','helper.h','Test.cpp']
perf_templates = ['perf.h']
main_templates = ['entry.cpp']
make_templates = ['CMakeLists.txt']
def copy_templates(templates,name,affected,to_be_replaced,to_replace):
for file in templates:
if not os.pat... 阅读全帖 |
|