0
我在学习antlr。我已经得到它与Java的工作,但不能让任何东西在C#中工作。我创建了最简单的例子,我可以从The Definitive Antlr Book中找到一个例子,我仍然遇到问题。C#中拆分词法分析器语法文件问题#
这是我的代码和我的语法。我硬编码 “你好帕尔” 作为输入和获得
线1:6不匹配输入 '帕尔' 预计ID
PreParser.g4
grammar PreParser;
import PreParseLex;
r: 'hello' ID;
PreParserLex.g4
lexer grammar PreParseLex;
ID: [a-z]+;
WS: [ \t\r\n]+ -> skip ;
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Antlr4.Runtime;
using Antlr4.Runtime.Misc;
using Antlr4.Runtime.Tree;
namespace PreparseApp
{
class Program
{
static void Main(string[] args)
{
string expression = "hello parr";
AntlrInputStream input = new AntlrInputStream(expression);
PreParseLex lexer = new PreParseLex(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
PreParserParser parser = new PreParserParser(tokens);
IParseTree tree = parser.r();
Console.WriteLine("Done");
}
}
}
我不明白为什么'parr'没有ID。想法?
如果您在Java版本中有某些工作不适用于C#版本,那么您可能需要在C#项目的问题跟踪器上发布错误报告:https://github.com/tunnelvisionlabs/antlr4cs/issues – 2014-12-02 11:52:50
我创建了一个[issue](https://github.com/tunnelvisionlabs/antlr4cs/issues/86)。 – Gary 2014-12-02 14:42:56