• Jiawen Lyu's avatar
    procedure without params · 887c128c
    Jiawen Lyu authored
    diff --git a/logo-fx/bin/logoparsing/LogoTreeVisitor.class b/logo-fx/bin/logoparsing/LogoTreeVisitor.class
    index 35b97e8..bd7627d 100644
    Binary files a/logo-fx/bin/logoparsing/LogoTreeVisitor.class and b/logo-fx/bin/logoparsing/LogoTreeVisitor.class differ
    diff --git a/logo-fx/src/logoparsing/LogoTreeVisitor.java b/logo-fx/src/logoparsing/LogoTreeVisitor.java
    index e96ea23..deb8946 100644
    --- a/logo-fx/src/logoparsing/LogoTreeVisitor.java
    +++ b/logo-fx/src/logoparsing/LogoTreeVisitor.java
    @@ -217,14 +217,20 @@ public class LogoTreeVisitor extends LogoBaseVisitor<Integer> {
         @Override
         public Integer visitProcedure(LogoParser.ProcedureContext ctx) {
             String nomProcedure = ctx.VAR().getText();
    -        Integer createListeParamsSuccess;
             //创建一个作用域,然后推入执行栈中,方便参数列表把记住所有的参数名
             TableSymboles currentTableSymboles = new TableSymboles();
             pileExecution.push(currentTableSymboles);
    
             Liste_instructionsContext listeInstructions = ctx.liste_instructions();
             //通过执行栈存储参数列表
    -        createListeParamsSuccess = visit(ctx.liste_parametres());
    +        Integer createListeParamsSuccess;
    +        if(ctx.liste_parametres() != null) {
    +            //如果有参数传进来
    +            createListeParamsSuccess = visit(ctx.liste_parametres());
    +        }else {
    +            //如果没有参数
    +            createListeParamsSuccess = 0;
    +        }
    
             //获取到参数名之后,创建相应的procedure实例
             currentTableSymboles = pileExecution.pop();
    @@ -477,7 +483,6 @@ public class LogoTreeVisitor extends LogoBaseVisitor<Integer> {
             if (!pileExecution.empty()) {
                 currentTableSymboles = pileExecution.pop();
             } else {
    -            System.out.println("执行栈为空");
                 return -1;
             }
    
    @@ -500,7 +505,6 @@ public class LogoTreeVisitor extends LogoBaseVisitor<Integer> {
             if (!pileExecution.empty()) {
                 currentTableSymboles = pileExecution.pop();
             } else {
    -            System.out.println("执行栈为空");
                 return -1;
             }
             setExprValue(ctx, currentTableSymboles.getValeur(varText));
    887c128c