- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下库编写解析器:
https://www.nuget.org/packages/Irony
我目前的目标是解析一个包含纯文本行的文件。每行以空格或制表符开头。
这是我的语法课的样子:
NonTerminal program = new NonTerminal("program");
NonTerminal textStatement = new NonTerminal("textStatement");
NonTerminal textStatements = new NonTerminal("textStatements");
FreeTextLiteral text = new FreeTextLiteral("text", "\r\n");
KeyTerm whitespace = ToTerm(" ", "whitespace");
KeyTerm tab = ToTerm(" ", "tab");
KeyTerm newline = ToTerm("\n", "newline");
textStatement.Rule = ((whitespace | tab) + text + newline);
textStatements.Rule = MakePlusRule(textStatements, textStatement);
program.Rule = textStatements;
this.Root = program;
这是目标文件的内容(不包括行):
----------------------
test
----------------------
令人惊讶的是,这件事失败了,并显示以下消息:
Column 1, Line 0:
Syntax error, expected: whitespace, tab
看起来语法被配置为默认跳过空格和制表符。因此,它以“t”字母开始解析,跳过了第一个“”符号。
public override bool IsWhitespaceOrDelimiter(char ch)
{
if (ch == ' ' || ch == '\t')
return false;
return base.IsWhitespaceOrDelimiter(ch);
}
public override void SkipWhitespace(ISourceStream source)
{
while (!source.EOF())
{
switch (source.PreviewChar)
{
//case ' ':
//case '\t':
// break;
case '\r':
case '\n':
case '\v':
if (UsesNewLine) return;
break;
default:
return;
}
source.PreviewPosition++;
}
}
最佳答案
如果要将 'space' 作为语法中的显式字符处理,则需要覆盖 IsWhitespaceOrDelimiter 方法,并且对于 space 返回 false。与制表符和其他字符相同
关于c# - 使用 Irony 解析时包含空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63908561/
我期望的是,当我键入 #incl 并按 Tab 键时,它会为我完成 #include。 但是我现在需要做的是:我先按Tab键,它会弹出一个包含可能单词的列表。我继续打字,直到一个独特的选择,它为我完成
因此,我正在尝试解析一些简单的 C# 代码以学习如何使用 Irony。我正在使用 Irony 示例中包含的 C# 语法,并使用那里的示例程序集加载代码。关于 Irony 的文档似乎很少。这是我要解析的
考虑我的 vbscript 语法的这一部分 EXPR.Rule = BINARY_EXPR | COMPARE_EXPR | AND_EXPR | OR
我是 Irony 的新手(大约 10 年前我在大学学习 BNF),我从创建一个准真实的坐标解析器开始。 下面是语法类(完整代码在 https://github.com/spadger/notam-vi
我是 Irony 编程的新手。我正在处理的第一个测试示例是计算数学形状(面积、体积……) 在简单模式下,它工作正常。但挑战是我想让它成为可选的。例如,如果我选择圆形作为形状,那么我只需要半径。另外,如
我正在使用以下库编写解析器: https://www.nuget.org/packages/Irony 我目前的目标是解析一个包含纯文本行的文件。每行以空格或制表符开头。 这是我的语法课的样子: No
我正在尝试使用 Irony 库的上下文无关语法来解析用户输入的前缀表示法逻辑表达式。这是一个类作业,所以如果有人恰好是这方面的专家,我很想知道更多。 我需要接受用户输入的以下格式的逻辑表达式: and
我正在努力跟上 Irony 的步伐.我不断看到一些我还不理解的术语:终端、非终端、 token 、状态机、关联性、抽象语法树。 有人可以给其中一些术语一些含义吗?我一直在阅读有关 Irony 的精彩文
我正在尝试使用 Irony 创建一个相当简单的解析器, 但我得出的结论是 Irony 可能不适合这种特殊情况。 这些是我正在尝试解析的示例: server_name example.com *.e
我是 Irony 的新手和整个语言实现 shebang,所以我一直在玩 ExpressionEvaluator Irony source 附带的示例,这似乎(几乎)满足了我正在从事的项目的需要。 但是
我正在尝试创建一个非常非常基本的命令行解析器。 例如,我可以有这个命令: command @arg1 value1 @arg2 value2 我已经尝试用这样的基本语法类来实现它: public cl
我正在使用 Irony 为脚本语言创建解析器,但我遇到了一个小问题:如何在 Irony 中翻译这样的 EBNF 表达式? '(' [ Ident { ',' Ident } ] ')' 我已经尝试过一
我有一个语法可以在 Irony 控制台中正常工作和解析,但我在 AST TreeView 中没有得到任何东西。我正在关注此处找到的 BASIC->Javascript 文章:http://www.co
是否有任何程序可以执行以下操作 Irony .NET language implementation kit确实如此,但是对于其他编程语言呢? 最佳答案 Irony 的语法使用类似 BNF 的表示法在
我正在尝试创建一个将常规 sql 语句转换为 c# 对象的方法,所以我决定使用 Irony 来解析 sql 语句,然后我将语句作为包含语句类型和值的 Action 返回这取决于类型 这是我未完成的代码
我正在尝试创建一个简单的 Irony 解析器。语法应该是 能够识别其中的一个或多个 设置链接("字符串"); 它似乎成功识别了 1 个 keyword() 调用,但连续两个调用失败了。我收到错误状态。
我目前正在使用 Irony 解析器,但我似乎还没有找到那么多文档。这次我想做一些类似 Bison 中的错误恢复的事情,在那里你可以得到错误所在的行和行。我不太确定如何在这样的语法中获取错误信息,例如:
我试过了 following this ,但在向导结束时出现错误。我不确定它是否与 2010 兼容。我正在观看 this video on Ook ,但我不确定如何将它与 Irony 联系起来。我认为
我是一名优秀的程序员,十分优秀!