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

What are these odd errors that occur when I attempt to generate C# with 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。这删除了开头插入的奇怪字符,并解决了我的(大部分)问题。