我是antlr的初学者.我试图在我的代码中使用访问者并遵循网络上的说明.但是,我发现访问者没有进入我创建的方法.愿谁有人告诉我我做错了什么?
这是我的访客:
import java.util.LinkedList;
import org.antlr.v4.runtime.misc.NotNull;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Sherwood
*/
public class ExtractMicroBaseVisitor extends MicroBaseVisitor<Integer> {
//LinkedList<IR> ll = new LinkedList<IR>();
//MicroParser parser;
//System.out.println("11");
@Override
public Integer visitPgm_body(@NotNull MicroParser.Pgm_bodyContext ctx){
System.out.println(ctx.getText());
return 467;
}
@Override
public Integer visitProgram(@NotNull MicroParser.ProgramContext ctx){
System.out.println("11");
return 456;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,当输入方法"visitProgram"时,stdout应打印11.但输出屏幕没有给我任何东西(null类型).
这是我的主要代码:
import java.io.IOException;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;
/**
*
* @author Sherwood
*/ …Run Code Online (Sandbox Code Playgroud) 我试图合并两个Android演示程序,但我无法正确.
我试过几种方法,但我无法弄明白.请你帮助我好吗?
这是我的错误消息:
09-20 03:28:25.617: E/AndroidRuntime(20108): FATAL EXCEPTION: main
09-20 03:28:25.617: E/AndroidRuntime(20108): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.navigation/com.example.android.navigation.MainActivity}: android.view.InflateException: Binary XML file line #18: Error inflating class fragment
09-20 03:28:25.617: E/AndroidRuntime(20108): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
09-20 03:28:25.617: E/AndroidRuntime(20108): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
09-20 03:28:25.617: E/AndroidRuntime(20108): at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-20 03:28:25.617: E/AndroidRuntime(20108): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
09-20 03:28:25.617: E/AndroidRuntime(20108): at android.os.Handler.dispatchMessage(Handler.java:99)
09-20 03:28:25.617: E/AndroidRuntime(20108): at android.os.Looper.loop(Looper.java:137)
09-20 03:28:25.617: E/AndroidRuntime(20108): at android.app.ActivityThread.main(ActivityThread.java:5041)
09-20 03:28:25.617: E/AndroidRuntime(20108): at java.lang.reflect.Method.invokeNative(Native Method)
09-20 03:28:25.617: E/AndroidRuntime(20108): at java.lang.reflect.Method.invoke(Method.java:511)
09-20 03:28:25.617: E/AndroidRuntime(20108): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-20 …Run Code Online (Sandbox Code Playgroud) 我在初始化ArrayLists时遇到问题.
当我使用NetBeans 7.3时,我尝试这样做:
protected Stack<Scope> scopeStack;
protected ArrayList<Scope> allScopes;
scopeStack = new Stack<>();
allScopes = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
该文件完美编译,并且很好.
但是当我使用命令行切换到linux来编译java时.它给了我一个错误
src/SymbolTable.java:28: illegal start of type scopeStack = new Stack<>();
SymbololTable.java:29: illegal start of type allScopes = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
这是由不同版本的java编译器引起的吗?或者造成这种情况的原因是什么?