1
두 개의 구문 (문이 hello
이고 블록 정의가 fun
)만으로 매우 간단한 들여 쓰기에 민감한 언어를 구문 분석하려고합니다.아이러니와 함께 들여 쓰기에 민감한 언어를 다루는 방법은 무엇입니까?
hello
hello
fun
hello
hello
hello
, 나는 아이러니 다음과 같은 문법을 구성했다 :
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
사람이 내가 잘못 뭐하는 거지 정확히 파악할 수 ?