2013-10-05 4 views
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

사람이 내가 잘못 뭐하는 거지 정확히 파악할 수 ?

답변