Ниже приведена моя грамматика 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