Написание правил грамматики ANTLR4 для 3 примитивных типов данных: INT (целое число), FLOAT и CHAR (символ) - PullRequest
0 голосов
/ 10 марта 2020

Ниже приведена моя грамматика ANTLR, которую я сделал, но я не знаю, когда я проверяю с JAVA Я получаю какую-то ошибку.

МОЙ Основа c ЦЕЛЬ предназначена для Installi sh ANTLR правила грамматики для трех примитивных типов данных: INT (целое число), FLOAT и CHAR (символ). BasForCCal будет иметь больше типов данных lat

grammar BasForCCAL;
// Vivek Mishra
@header {
package basforccal;
import java.util.HashMap;
}

@lexer::header{
package basforccal;
}

@members{
        String programName;
        boolean errors = false;
        HashMap memory = new HashMap();



        public void checkName(String endName){
            if(!endName.equals(programName)){
            System.out.println("Wrong Program name in end of the program");
            }
        }
}

program : start programbody end;
start   :'PROGRAM' ID {programName = $ID.text ; System.out.println("Checking program :"+$ID.text);};

programbody
    :   devcar*;

devcar  :   initInt var1|
                intFloat var1|
                intChar var1 ;


initInt :   'INT'
        ;

intFloat
    :   'FLOAT'
    ;

intChar:     'CHAR';     
end
        : 'END' ID '.' {checkName($ID.text);};

var1    : idname (',' var1)* ;

idname  :    ID {Integer v = (Integer)memory.get($ID.text);
                    if(v!=null) 
                        {System.err.println("Error: "+$ID.text+" already defined line:"+$ID.getLine());}
                    else
                        {memory.put($ID.text,new Integer('1'));}
                    }
        ;

Это ошибка, которую я получаю в файле парсера.

Error:(391, 46) java: cannot find symbol
  symbol:   variable memory
  location: class basforccal.BasForCCALParser
Error:(395, 50) java: cannot find symbol
  symbol:   variable memory
  location: class basforccal.BasForCCALParser
...