Visual Studio で antlr を使用する方法を学習し始めていますが、基本的な例が機能しません。
私が使用しているグラマーは次のとおりです。
grammar T;
options {
language=CSharp3;
TokenLabelType=CommonToken;
}
@lexer::namespace {CoolTool.CoolProject.Compiler}
@parser::namespace {CoolTool.CoolProject.Compiler}
/*
* Parser Rules
*/
compileUnit
: 'a' AFTER
;
AFTER
: 'after'
;
WS
: (' '|'\r'|'\t'|'\u000C'|'\n');
以下は、レクサーとグラマーをインスタンス化する C# コードです。
using System;
using Antlr.Runtime;
namespace CoolTool.CoolProject.Compiler
partial class TParser
{
public static void Main(String[] args)
{
TLexer lexer = new TLexer(new ANTLRStringStream("$$%$%"));
CommonTokenStream tokens = new CommonTokenStream(lexer);
TParser parser = new TParser(tokens);
parser.compileUnit();
Console.WriteLine("OK");
}
}
}
問題は、レクサー/パーサーに何を渡しても、エラーが発生しないことです。「$$」に対して NoViableAltException が発生しないのはなぜですか?
誰でも助けることができますか?
ありがとう、アミール