【问题标题】:How to deal with indentation-sensitive language with Irony?如何用 Irony 处理缩进敏感的语言?
【发布时间】:2013-10-05 11:03:12
【问题描述】:

我试图用两个结构(hello 语句和fun 块定义)解析一种非常幼稚的缩进敏感语言。

hello
hello
fun
  hello
  hello
hello

为了做到这一点,我用 Irony 编写了以下语法:

public class NaiveIndent : Grammar
{
    public NaiveIndent()
        : base(true) // CaseSensitive
    {
        var myexp = ToTerm("hello");
        var fun = ToTerm("fun");

        var statementList = new NonTerminal("statementList");
        var statement = new NonTerminal("statement");
        var block = new NonTerminal("block");

        statementList.Rule = MakePlusRule(statementList, NewLineStar, statement);
        statement.Rule = (myexp | block) + NewLine;
        block.Rule = fun + NewLine + Indent + statementList + Dedent;

        Root = statementList;
        LanguageFlags = LanguageFlags.NewLineBeforeEOF;
    }
}

但解析示例失败并出现错误(4,3) Syntax error, expected: INDENT

谁能指出我做错了什么?

【问题讨论】:

    标签: c# .net dsl irony


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多