我正在构建一个包含某些解析器的库。这些解析器是内部使用ANTLR4构建的。由于生成的类都是public,因此我的库的用户可以看到所有他们不需要看到的类。此外,Sandcastle文档中包含了所有这些类。有没有办法告诉ANTLR将生成的类设置为internal而不是public?
只需复制此文件,并根据需要进行修改。例如,我通常会删除org\antlr\v4\tool\templates\codegen\CSharp\CSharp.stg
CLSCompliant(false)
属性以消除编译器的警告,并将所有类和接口设置为内部。CLASSPATH
中,并确保保留原始文件夹结构,以便指向包含org
目录的文件夹,而不是CSharp.stg
本身。Generate.bat
应该如下所示(假设 java.exe
在你的 PATH
中):pushd %~dp0
set CLASSPATH=.;antlr-4.7-complete.jar
java org.antlr.v4.Tool -Dlanguage=CSharp Grammar.g4
愉快编码!
C# 目标支持 '@modifier'。例如,要使生成的类内部可见,您可以编写
@modifier{internal}