jbr*_*aud 3 java eclipse antlr antlrworks
我已经获得了一个称为静态Java编译器的Java编译器子集的ANTLR语法.我正在尝试扩展语法以包含更多Java的功能,例如,我刚刚为For Loops添加了语法.
使用Eclipse和ANTLR插件,然后我做了"编译ANTLR语法".而不是编译它在第一个代码位上产生了两个错误:
grammar ExtendedStaticJava;
options { backtrack=true; memoize=true; }
@header
{
package sjc.parser.extended;
import java.math.BigInteger;
/**
 * Extended StaticJava parser.
 * @author <myname>
 */
}
// the rest of the grammar has been excluded.
第一个错误在第1行:'Unexpected Token:grammar'第二个错误在第5行:'意外的char:@'
为什么它不能识别这种基本的ANTLR语法?我的第一个想法是我在类路径中遗漏了一些东西,但是我去了项目的属性,并确保在库下包含以下JAR :
任何想法或建议?
antlr-2.7.7.jar错了:你的语法是用ANTLR v3 +语法编写的.移除所有:
从你的项目/类路径中只有这个ANTLR v3 JAR(它包含你需要的一切:runtime,stringtemplate,works!).
祝好运!
就个人而言,我使用Ant构建脚本进行IDE集成.我生成一个像这样的词法分析器和解析器:
<target name="generate.parser" depends="init" description="Generates the lexer, parser and tree-walker from the grammar files.">
    <echo>Generating the lexer and parser...</echo>
    <java classname="org.antlr.Tool" fork="true" failonerror="true">
        <arg value="-fo" />
        <arg value="${main.src.dir}/${parser.package}" />
        <arg value="${parser.grammar.file}" />
        <classpath refid="classpath" />
    </java>
    <!-- snip -->
</target>
和classpath refid看起来像:
<path id="classpath">
    <!-- snip -->
    <fileset dir="lib">
        <include name="*.jar" />
    </fileset>
</path>
并且该lib/目录包含ANTLR v3 JAR(没有其他ANTLR JAR!(对不起锤击它:)))
| 归档时间: | 
 | 
| 查看次数: | 5900 次 | 
| 最近记录: |