问题标签 [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.

0 投票
1 回答
98 浏览

superpower - 尝试构建 TextParser具有相同的打开/关闭/分隔符

我正在使用 SuperPower 库构建解析器。

这是我要解析的源输入示例:

|ABC|xyz|1 3|~~~|

  • 第一个|OpeningPipe.
  • 最后一个|ClosingPipe.
  • 第 2、3、4 个|是分隔符。
  • 最终,我希望能够在解析过程中产生这种结构:

我认为我遇到的问题是我的分隔符与我的ClosingPipe角色相同。

我应该如何构建这个TextParser<string[]>

0 投票
1 回答
156 浏览

.net - 使用 Superpower 解析列表列表

我想解析以如下格式表示的图书馆的书籍:

如您所见,引导的标题以#开头,每本书的章节如下几行。为此创建解析器应该相当容易。

到目前为止,我有这个代码(解析器+标记器):

上面的代码已准备好在此链接上的 .NET Fiddle 中运行https://dotnetfiddle.net/3P5dAJ

一切看起来都很好。但是,解析器出了点问题,因为我收到了这个错误:

语法错误(第 4 行,第 1 列):意外哈希#,预期文本。

我的解析器有什么问题?

0 投票
1 回答
192 浏览

c# - 无法将 2 Superpower TextParser 与 Or 与 Span 结合

我有 2 个 Superpower TextParser - 每个目标都解析某个输入 - 由前缀和参数区分。我正在尝试创建一个组合解析器,当任一 TextParser 可以解析输入时给出结果。输出是一个列表,其中包含描述输入的某些字符串。

例如一些输入和输出对如下

对于示例输入和输出对,我用 C# 编写了以下内容,并添加了超能力参考。

我的combined标识符无法解析输入interrupt(12)并给出以下错误

语法错误(第 1 行,第 3 列):意外t,预期s

有没有正确的方法来做标识符的“或”组合?

0 投票
4 回答
242 浏览

c# - 有没有办法在 c# 中使用 if-else 语句来简化 LINQ 语句

我有一个有效的 LINQ 表达式,但我想让它更简单、更清晰。

我在整个互联网上寻找某种方法来在 LINQ 表达式中包含一个 if 语句,如果满足某些条件,我可以停止并返回一个对象......或者如果不满足条件,则继续执行另一个查询。

也许这很明显,但我真的一无所知。

0 投票
0 回答
109 浏览

c# - 超强解析器,解析括号样式访问器

我正在尝试在 Superpower C# 解析器库中创建一个解析器来解析递归/链式括号样式访问器。这是我要解析的示例:

indentifier.identifier[exp][exp].identifier[exp]

对于我正在使用的点访问器Parse.Chain

这很好用,我的猜测是我需要更改Identifier解析器并使其成为ie BracketMemberAccess(顺便说一句,我没有这个,因为我不知道如何实现它..这是我的问题开始)。但我的猜测到此为止。我怎样才能做到这一点?

0 投票
0 回答
172 浏览

c# - 如何在 Superpower C# 中找到某个令牌模式之前忽略令牌?

我正在尝试解析散布有函数的对象,并且我想跳过这些函数。

结构是:

一个函数可以被路径之后的paranthasees识别。由于解析代码很困难,我只想在开括号之后跳过令牌,直到找到一个 EOL 令牌,然后是一个 ReferencePath。我试图解析函数,但没有真正的回报太难了,所以这就是我目前所处的位置:

源代码,虽然不是最新版本:https ://github.com/RedlineTriad/DMParser

我试图解析的代码:https ://github.com/tgstation/tgstation/tree/master/code/modules/reagents/chemistry/recipes

0 投票
0 回答
132 浏览

compiler-construction - 将链式表达式建模为 AST

前言

我第一次尝试编写解释器/编译器。标记化和解析已经是一件事,我似乎已经想通了。我仍然发现自己在苦苦挣扎,因为有些语言结构很难建模。请查看我尝试转换为abstract syntax tree.

带下划线的表达式建模AST为:


问题:

A. chained 应该Expressions被建模为一个数组,它们应该相互嵌套吗?后期评估和遍历最实用的模型是什么?

B.在 中func assignToChainedExpressions,将值分配给链是否有意义,其中第一个Expression是 a ClassInstantiation?我想,instance它本身会在运行时被丢弃。

C.大多数示例使用非常简单的模型进行Assignment操作。看:

如果操作的左侧也是 an,应该如何对更复杂的赋值建模Expression


编辑1:

像这样建模是否是个好主意assignFromChainedExpressions

像这样建模是否是个好主意assignToChainedExpressions

0 投票
1 回答
50 浏览

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

0 投票
0 回答
83 浏览

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)

0 投票
1 回答
49 浏览

superpower - Superpower:创建解析器以匹配“\r\n”或“\n”(更通用:匹配字符串文字)

我想为 EOL 创建一个解析器,我不能只做空格,因为我需要它来忽略空格。

所以我想创建一个匹配“\r\n”或“\n”的解析器。做单个字符很容易Character.EqualTo('\n'),但尝试匹配特定的字符串文字让我感到困惑。我认为这应该是关键字需要做的常规事情,但我不知所措。