Tag: 解析

如何构建真值表生成器?

我正在寻找一个真实表生成器作为个人项目。 这里和这里有几个基于网络的在线网站。 (Example screenshot of an existing Truth Table Generator ) 我有以下问题: 我应该如何解析表达式,如: ((P => Q)&(Q => R))=>(P => R) 我应该使用像ANTLr或YACC这样的解析器生成器,还是使用直接的正则表达式? 一旦我解析了表达式,我该如何生成真值表? 表达式的每个部分都需要划分为最小的组件,并从表的左侧重新构建到右侧。 我该如何评价这样的东西? 任何人都可以向我提供有关解析这些任意表达式并最终评估解析表达式的提示吗?

手编码解析器

对于你所有的编译器大师,我想编写一个递归下降解析器,我想只用代码来做。 没有从其他语法生成词法分析器和解析器并且不告诉我阅读龙书,我最终会到达那里。 我想进入关于为合理的简单语言实现词法分析器和解析器的细节,比如说CSS。 我想做对了。 这可能最终会成为一系列问题,但现在我开始使用词法分析器了。 可以在此处找到CSS的标记规则。 我发现自己编写这样的代码(希望你可以从这个代码片段中推断出其余部分): public CssToken ReadNext() { int val; while ((val = _reader.Read()) != -1) { var c = (char)val; switch (_stack.Top) { case ParserState.Init: if (c == ‘ ‘) { continue; // ignore } else if (c == ‘.’) { _stack.Transition(ParserState.SubIdent, ParserState.Init); } break; case ParserState.SubIdent: if (c == ‘-‘) […]

手动编写解析器的最佳方法是什么?

我们使用ANTLR为类似SQL的语法创建解析器,虽然在大多数情况下结果令人满意,但我们需要修复一些边缘情况; 因为我们自己没有编写解析器,所以我们并不能很好地理解它,以便能够做出明智的改变。 所以,我们想编写自己的解析器。 手动编写解析器的最佳方法是什么? 我们应该使用什么样的解析器 – 建议使用递归下降; 是对的吗? 我们将用C#编写它,因此任何用该语言编写解析器的教程都会感激不尽。 更新:我也对涉及F#的答案感兴趣 – 我一直在寻找在项目中使用它的理由。

字符串到C#中的解析?

我有一个数据字符串’yyyymmddhhmmss’示例:’20101001151014’,我如何在C#中解析这个?

HtmlAgilityPack DocumentNode.SelectNodes返回null,不应该

我正在尝试使用HTML敏捷包从示例页面中删除内容。 当我认为它不应该时,DocumentNode.SelectNodes为XPath查询返回null。 有人能告诉我为什么吗? 代码是: HtmlDocument doc = new HtmlDocument(); string xpath = “//h1[@class=’product-title fn’]”; // note, it still returns // null even with “//div” doc.OptionFixNestedTags = true; HtmlNode.ElementsFlags.Remove(“form”); HtmlNode.ElementsFlags.Remove(“option”); HtmlNodeCollection coll = doc.DocumentNode.SelectNodes(xpath); if (coll != null) { // do stuff } else { // not expecting it to be null unless no matches }

c#解析日期时间“2011年1月14日星期五14:56:36 GMT-0800(太平洋标准时间)”

我正在做 DateTime dt = DateTime.ParseExact(stringDate, “ddd MMM dd yyyy HH:mm:ss UTCzzzzz zzzz”, System.Globalization.CultureInfo.InvariantCulture); 但是,这会产生错误(错误是日期格式不正确)。 你们知道正确的语法是什么吗? 日期是: 2011年1月14日星期五15:00:39 GMT-0800(太平洋标准时间)

为什么double.Parse(“0.05”)返回5.0?

我正从App.config中读取一个值; 这是: 我尝试通过以下方式将其转换为双倍: var d = double.Parse(ConfigurationManager.AppSettings[“someValue”]); 而我获得5.0而不是0.05。 你能建议吗? 我做错了什么,我应该如何解析?

如何解析字符串以查找其中的键值对

在谷歌搜索邮件时,我们使用sytax from:devcoder hasattachments:true mySearchString on:11-aug 要么 mySearchString from:devcoder on:11-aug anotherSearchKeyword 在解析之后,我应该得到keyvalue对,例如(from,devcoder),(on,11-aug)。 在c#中实现此解析的最佳方法是什么?

从具有尾随垃圾的字符串中解析整数

我需要解析出现在字符串开头的十进制整数。 十进制数后面可能有尾随垃圾。 这需要被忽略(即使它包含其他数字。) 例如 “1” => 1 ” 42 ” => 42 ” 3 -.X.-” => 3 ” 2 3 4 5″ => 2 .NET框架中是否有内置方法来执行此操作? int.TryParse()不合适。 它允许尾随空格但不允许其他尾随字符。 实现它很容易,但如果它存在,我宁愿使用标准方法。

Mediawiki标记的开源解析器代码

我有兴趣有选择地解析Mediawiki XML标记,以生成一个自定义HTML页面,该页面是实际PHP Mediawiki渲染引擎生成的HTML的一部分。 我想要它用于BzReader,一个用C#编写的离线Mediawiki压缩转储读取器。 所以C#解析器是理想的,但任何好的代码都会有所帮助。 当然,如果以前没有人这样做过,我想是时候开始一个项目维护一个免费的,独立的Mediawiki解析器,基于Mediawiki自己的解析器,但与Mediawiki本身不太紧密集成。 那么,有没有人知道我可以开始的任何基础,这比从Mediawiki PHP代码入侵更好?