问题标签 [superpower]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
superpower - 尝试构建 TextParser具有相同的打开/关闭/分隔符
我正在使用 SuperPower 库构建解析器。
这是我要解析的源输入示例:
|ABC|xyz|1 3|~~~|
- 第一个
|
是OpeningPipe
. - 最后一个
|
是ClosingPipe
. - 第 2、3、4 个
|
是分隔符。 - 最终,我希望能够在解析过程中产生这种结构:
我认为我遇到的问题是我的分隔符与我的ClosingPipe
角色相同。
我应该如何构建这个TextParser<string[]>
?
.net - 使用 Superpower 解析列表列表
我想解析以如下格式表示的图书馆的书籍:
如您所见,引导的标题以#开头,每本书的章节如下几行。为此创建解析器应该相当容易。
到目前为止,我有这个代码(解析器+标记器):
上面的代码已准备好在此链接上的 .NET Fiddle 中运行https://dotnetfiddle.net/3P5dAJ
一切看起来都很好。但是,解析器出了点问题,因为我收到了这个错误:
语法错误(第 4 行,第 1 列):意外哈希
#
,预期文本。
我的解析器有什么问题?
c# - 无法将 2 Superpower TextParser 与 Or 与 Span 结合
我有 2 个 Superpower TextParser - 每个目标都解析某个输入 - 由前缀和参数区分。我正在尝试创建一个组合解析器,当任一 TextParser 可以解析输入时给出结果。输出是一个列表,其中包含描述输入的某些字符串。
例如一些输入和输出对如下
对于示例输入和输出对,我用 C# 编写了以下内容,并添加了超能力参考。
我的combined
标识符无法解析输入interrupt(12)
并给出以下错误
语法错误(第 1 行,第 3 列):意外
t
,预期s
。
有没有正确的方法来做标识符的“或”组合?
c# - 有没有办法在 c# 中使用 if-else 语句来简化 LINQ 语句
我有一个有效的 LINQ 表达式,但我想让它更简单、更清晰。
我在整个互联网上寻找某种方法来在 LINQ 表达式中包含一个 if 语句,如果满足某些条件,我可以停止并返回一个对象......或者如果不满足条件,则继续执行另一个查询。
也许这很明显,但我真的一无所知。
c# - 超强解析器,解析括号样式访问器
我正在尝试在 Superpower C# 解析器库中创建一个解析器来解析递归/链式括号样式访问器。这是我要解析的示例:
indentifier.identifier[exp][exp].identifier[exp]
对于我正在使用的点访问器Parse.Chain
和
这很好用,我的猜测是我需要更改Identifier
解析器并使其成为ie BracketMemberAccess
(顺便说一句,我没有这个,因为我不知道如何实现它..这是我的问题开始)。但我的猜测到此为止。我怎样才能做到这一点?
c# - 如何在 Superpower C# 中找到某个令牌模式之前忽略令牌?
我正在尝试解析散布有函数的对象,并且我想跳过这些函数。
结构是:
一个函数可以被路径之后的paranthasees识别。由于解析代码很困难,我只想在开括号之后跳过令牌,直到找到一个 EOL 令牌,然后是一个 ReferencePath。我试图解析函数,但没有真正的回报太难了,所以这就是我目前所处的位置:
源代码,虽然不是最新版本:https ://github.com/RedlineTriad/DMParser
我试图解析的代码:https ://github.com/tgstation/tgstation/tree/master/code/modules/reagents/chemistry/recipes
compiler-construction - 将链式表达式建模为 AST
前言
我第一次尝试编写解释器/编译器。标记化和解析已经是一件事,我似乎已经想通了。我仍然发现自己在苦苦挣扎,因为有些语言结构很难建模。请查看我尝试转换为abstract syntax tree
.
带下划线的表达式建模AST
为:
问题:
A. chained 应该Expressions
被建模为一个数组,它们应该相互嵌套吗?后期评估和遍历最实用的模型是什么?
B.在 中func
assignToChainedExpressions
,将值分配给链是否有意义,其中第一个Expression
是 a ClassInstantiation
?我想,instance
它本身会在运行时被丢弃。
C.大多数示例使用非常简单的模型进行Assignment
操作。看:
如果操作的左侧也是 an,应该如何对更复杂的赋值建模Expression
?
编辑1:
像这样建模是否是个好主意assignFromChainedExpressions
:
像这样建模是否是个好主意assignToChainedExpressions
:
superpower - SuperPower 解析器运行时异常:值不能为空。参数名称:解析器
我被要求为由 3 种类型的运算符(AND、AND_NOT、OR)、分组括号和数据值组成的逻辑语句创建一个 Superpower 解析器。数据值是整数格式,但是是标识符。这些更像是规则而不是数学陈述。
示例 1:20 AND NOT (29 OR 30) 示例 2:27 AND (9 OR (24 AND 25 AND 27))
目前,我在运行时遇到异常,内部消息为{"Value cannot be null.\r\nParameter name: parser"}。堆栈跟踪表明它发生在我调用主解析器的 TryParse 方法的那一行。有人可以给我一些调试这个的提示吗?
这是我在控制台应用程序中的内容。
程序.cs
令牌.cs
解析器.cs
TokenNodes.cs
parsing - Using superpower to parse simple block oriented data structures
I could use some hints to start writing a simple parser using C# (preferably superpower or perhaps sprache) to parse files defining some simple structures like:
The real case is more complex, more keywords (tokens?), deeper, contains enums etc. but not infinitely nested though.
I guess this should be very simple, but as mentioned, I would highly appreciate some start help and would possibly being able to develop further what I need. I have checked some of the samples, but my experience in parsing is simply too little (quite experienced programming C# though)
superpower - Superpower:创建解析器以匹配“\r\n”或“\n”(更通用:匹配字符串文字)
我想为 EOL 创建一个解析器,我不能只做空格,因为我需要它来忽略空格。
所以我想创建一个匹配“\r\n”或“\n”的解析器。做单个字符很容易Character.EqualTo('\n')
,但尝试匹配特定的字符串文字让我感到困惑。我认为这应该是关键字需要做的常规事情,但我不知所措。