c# - 当我尝试使用 ANTLR4 生成 C# 时出现的这些奇怪错误是什么?

标签 c# parsing visual-studio-2015 antlr antlr4

我(现在)正在尝试使用 ANTLR4 和 C# 来设计一种语言,到目前为止我一直在摆弄它。在此过程中,我决定尝试创建一个简单的数学表达式求值器。在此过程中,我为其创建了以下 ANTLR 语法:

grammar Calculator;

@parser::members
{
    protected const int EOF = Eof;
}

@lexer::members
{
    protected const int EOF = EOF;
    protected const int HIDDEN = Hidden;
}

program : expr+ ;

expr : expr op=('*' | '/') expr
     | expr op=('+' | '-') expr
     | INT
     | '(' expression ')'
     ;

INT : [0-9]+ ;
MUL : '*' ;
DIV : '/' ;
ADD : '+' ;
SUB : '-' ;
WS : (' ' | '\r' | '\n') -> channel(HIDDEN) ;

当我尝试使用此命令从中生成 C# 代码时:

java -jar C:\...\antlr-4.2-complete.jar -DLanguage=CSharp .\...\Grammar.g4

我得到这些奇怪的错误:

error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:0: syntax error: 'ï' came as a complete surprise to me    
error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:1: syntax error: '»' came as a complete surprise to me    
error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:2: syntax error: '¿' came as a complete surprise to me  
error(50): C:\Users\Ethan\Documents\Visual Studio 2015\Projects\CypressLang\CypressLang\Source\.\Grammar\CypressGrammar.g4:1:3: syntax error: mismatched input 'grammar' expecting SEMI

可能导致这些错误的原因是什么,我该如何解决?目前我最好的猜测是 Visual Studio 将奇怪的字符插入到文件的开头,我无法删除它们。

最佳答案

今天不是个好日子

Visual Studio 决定对付我,将我所有文件的文件格式更改为 UTF-8。我所需要做的就是转到 File > Advanced Save Settings,并将编码更改为 US-ASCII。这删除了开头插入的奇怪字符,并解决了(大部分)我的问题。

关于c# - 当我尝试使用 ANTLR4 生成 C# 时出现的这些奇怪错误是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33446700/

相关文章:

c# - 在 SOAP 信封中创建新字典

mysql - NSARRAY JSON 空

c++ - 未知覆盖说明符 + 缺少类型说明符

typescript - Visual Studio 2015 CTP 6 - 将 Typescript 输出合并到单个 .js 文件中

c# - 我如何调用 Form1 或这个?

c# - 按最后一次出现的字符拆分字符串的最佳方法?

c# - 事务提交并关闭连接后是否可以回滚?

c# - 无需互操作即可获取 PDF 中的所有单词及其位置

excel - 在 Excel VBA 中从大型文本文件复制底行

c# - 链接到 C# GUI 的 C++ 程序