basic language
This commit is contained in:
		
							parent
							
								
									cde352b443
								
							
						
					
					
						commit
						94709c1430
					
				| 
						 | 
				
			
			@ -0,0 +1,75 @@
 | 
			
		|||
grammar Basic;
 | 
			
		||||
 | 
			
		||||
program: expr;
 | 
			
		||||
 | 
			
		||||
expr
 | 
			
		||||
    : PAROPEN expr PARCLOSE #parens
 | 
			
		||||
    | BRAOPEN expr BRACLOSE #block
 | 
			
		||||
    | IN PAROPEN variable (LISTDELIM variable)* PARCLOSE #read
 | 
			
		||||
    | OUT PAROPEN expr (LISTDELIM expr)* PARCLOSE #write
 | 
			
		||||
    | IFOPEN cond=expr IFTRUE onTrue=expr (IFFALSE onFalse=expr)? IFCLOSE #if
 | 
			
		||||
    | WHILEOPEN cond=expr WHILETRUE onTrue=expr WHILECLOSE #while
 | 
			
		||||
    | op=(PLUS|MINUS|NOT) expr #prefix1
 | 
			
		||||
    | lhs=expr op=(MULTIPLY|DIVIDE|MODULO) rhs=expr #infix1
 | 
			
		||||
    | lhs=expr op=(PLUS|MINUS) rhs=expr #infix2
 | 
			
		||||
    | lhs=expr op=(LT|LEQ|GTE|GT|EQ|NEQ) rhs=expr #infix3
 | 
			
		||||
    | lhs=expr AND rhs=expr #infix4
 | 
			
		||||
    | lhs=expr OR rhs=expr #infix5
 | 
			
		||||
    | DECLARE type IDENTIFIER #declare
 | 
			
		||||
    | <assoc=right> variable ASSIGN expr #assign
 | 
			
		||||
    | expr (COMPOUND expr?)+ #compound
 | 
			
		||||
    | variable #var
 | 
			
		||||
    | LITERAL10 #number
 | 
			
		||||
    | CHAR #char
 | 
			
		||||
    | (TRUE|FALSE) #bool
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
type: staticType=(INTTYPE | BOOLTYPE | CHARTYPE) | variable;
 | 
			
		||||
variable: IDENTIFIER;
 | 
			
		||||
 | 
			
		||||
PAROPEN: '(';
 | 
			
		||||
PARCLOSE: ')';
 | 
			
		||||
BRAOPEN: '{';
 | 
			
		||||
BRACLOSE: '}';
 | 
			
		||||
IN: 'read';
 | 
			
		||||
OUT: 'print';
 | 
			
		||||
IFOPEN: 'if';
 | 
			
		||||
IFTRUE: 'then';
 | 
			
		||||
IFFALSE: 'else';
 | 
			
		||||
IFCLOSE: 'fi';
 | 
			
		||||
WHILEOPEN: 'while';
 | 
			
		||||
WHILETRUE: 'do';
 | 
			
		||||
WHILECLOSE: 'od';
 | 
			
		||||
 | 
			
		||||
PLUS: '+';
 | 
			
		||||
MINUS: '-';
 | 
			
		||||
NOT: '!';
 | 
			
		||||
MULTIPLY: '*';
 | 
			
		||||
DIVIDE: '/';
 | 
			
		||||
MODULO: '%';
 | 
			
		||||
LEQ: '<=';
 | 
			
		||||
GTE: '>=';
 | 
			
		||||
NEQ: '<>';
 | 
			
		||||
EQ: '==';
 | 
			
		||||
LT: '<';
 | 
			
		||||
GT: '>';
 | 
			
		||||
AND: '&&';
 | 
			
		||||
OR: '||';
 | 
			
		||||
 | 
			
		||||
DECLARE: 'var';
 | 
			
		||||
INTTYPE: 'int';
 | 
			
		||||
BOOLTYPE: 'bool';
 | 
			
		||||
CHARTYPE: 'char';
 | 
			
		||||
ASSIGN: ':=';
 | 
			
		||||
COMPOUND: ';';
 | 
			
		||||
LISTDELIM: ',';
 | 
			
		||||
 | 
			
		||||
CHAR: '\'' . '\'';
 | 
			
		||||
TRUE: 'true';
 | 
			
		||||
FALSE: 'false';
 | 
			
		||||
IDENTIFIER: [A-Za-z_][A-Za-z0-9_]*;
 | 
			
		||||
LITERAL10: ('0' | [1-9] [0-9]*);
 | 
			
		||||
 | 
			
		||||
WHITESPACE: [\t\r\n ] -> skip;
 | 
			
		||||
LINECOMMENT: '//' ~[\r\n]* -> skip;
 | 
			
		||||
BLOCKCOMMENT: '/*' .*? '*/' -> skip;
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
PAROPEN=1
 | 
			
		||||
PARCLOSE=2
 | 
			
		||||
BRAOPEN=3
 | 
			
		||||
BRACLOSE=4
 | 
			
		||||
IN=5
 | 
			
		||||
OUT=6
 | 
			
		||||
IFOPEN=7
 | 
			
		||||
IFTRUE=8
 | 
			
		||||
IFFALSE=9
 | 
			
		||||
IFCLOSE=10
 | 
			
		||||
WHILEOPEN=11
 | 
			
		||||
WHILETRUE=12
 | 
			
		||||
WHILECLOSE=13
 | 
			
		||||
PLUS=14
 | 
			
		||||
MINUS=15
 | 
			
		||||
NOT=16
 | 
			
		||||
MULTIPLY=17
 | 
			
		||||
DIVIDE=18
 | 
			
		||||
MODULO=19
 | 
			
		||||
LEQ=20
 | 
			
		||||
GTE=21
 | 
			
		||||
NEQ=22
 | 
			
		||||
EQ=23
 | 
			
		||||
LT=24
 | 
			
		||||
GT=25
 | 
			
		||||
AND=26
 | 
			
		||||
OR=27
 | 
			
		||||
DECLARE=28
 | 
			
		||||
INTTYPE=29
 | 
			
		||||
BOOLTYPE=30
 | 
			
		||||
CHARTYPE=31
 | 
			
		||||
ASSIGN=32
 | 
			
		||||
COMPOUND=33
 | 
			
		||||
LISTDELIM=34
 | 
			
		||||
CHAR=35
 | 
			
		||||
TRUE=36
 | 
			
		||||
FALSE=37
 | 
			
		||||
IDENTIFIER=38
 | 
			
		||||
LITERAL10=39
 | 
			
		||||
WHITESPACE=40
 | 
			
		||||
LINECOMMENT=41
 | 
			
		||||
BLOCKCOMMENT=42
 | 
			
		||||
'('=1
 | 
			
		||||
')'=2
 | 
			
		||||
'{'=3
 | 
			
		||||
'}'=4
 | 
			
		||||
'read'=5
 | 
			
		||||
'print'=6
 | 
			
		||||
'if'=7
 | 
			
		||||
'then'=8
 | 
			
		||||
'else'=9
 | 
			
		||||
'fi'=10
 | 
			
		||||
'while'=11
 | 
			
		||||
'do'=12
 | 
			
		||||
'od'=13
 | 
			
		||||
'+'=14
 | 
			
		||||
'-'=15
 | 
			
		||||
'!'=16
 | 
			
		||||
'*'=17
 | 
			
		||||
'/'=18
 | 
			
		||||
'%'=19
 | 
			
		||||
'<='=20
 | 
			
		||||
'>='=21
 | 
			
		||||
'<>'=22
 | 
			
		||||
'=='=23
 | 
			
		||||
'<'=24
 | 
			
		||||
'>'=25
 | 
			
		||||
'&&'=26
 | 
			
		||||
'||'=27
 | 
			
		||||
'var'=28
 | 
			
		||||
'int'=29
 | 
			
		||||
'bool'=30
 | 
			
		||||
'char'=31
 | 
			
		||||
':='=32
 | 
			
		||||
';'=33
 | 
			
		||||
','=34
 | 
			
		||||
'true'=36
 | 
			
		||||
'false'=37
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,168 @@
 | 
			
		|||
// Generated from Basic.g4 by ANTLR 4.7
 | 
			
		||||
package pp.s1184725.boppi;
 | 
			
		||||
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This class provides an empty implementation of {@link BasicVisitor},
 | 
			
		||||
 * which can be extended to create a visitor which only needs to handle a subset
 | 
			
		||||
 * of the available methods.
 | 
			
		||||
 *
 | 
			
		||||
 * @param <T> The return type of the visit operation. Use {@link Void} for
 | 
			
		||||
 * operations with no return type.
 | 
			
		||||
 */
 | 
			
		||||
public class BasicBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements BasicVisitor<T> {
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitProgram(BasicParser.ProgramContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitParens(BasicParser.ParensContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitRead(BasicParser.ReadContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitDeclare(BasicParser.DeclareContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitBool(BasicParser.BoolContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitVar(BasicParser.VarContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitInfix2(BasicParser.Infix2Context ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitInfix3(BasicParser.Infix3Context ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitInfix1(BasicParser.Infix1Context ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitWhile(BasicParser.WhileContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitCompound(BasicParser.CompoundContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitInfix4(BasicParser.Infix4Context ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitInfix5(BasicParser.Infix5Context ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitNumber(BasicParser.NumberContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitChar(BasicParser.CharContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitBlock(BasicParser.BlockContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitWrite(BasicParser.WriteContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitIf(BasicParser.IfContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitPrefix1(BasicParser.Prefix1Context ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitAssign(BasicParser.AssignContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitType(BasicParser.TypeContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
	 *
 | 
			
		||||
	 * <p>The default implementation returns the result of calling
 | 
			
		||||
	 * {@link #visitChildren} on {@code ctx}.</p>
 | 
			
		||||
	 */
 | 
			
		||||
	@Override public T visitVariable(BasicParser.VariableContext ctx) { return visitChildren(ctx); }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,201 @@
 | 
			
		|||
// Generated from Basic.g4 by ANTLR 4.7
 | 
			
		||||
package pp.s1184725.boppi;
 | 
			
		||||
import org.antlr.v4.runtime.Lexer;
 | 
			
		||||
import org.antlr.v4.runtime.CharStream;
 | 
			
		||||
import org.antlr.v4.runtime.Token;
 | 
			
		||||
import org.antlr.v4.runtime.TokenStream;
 | 
			
		||||
import org.antlr.v4.runtime.*;
 | 
			
		||||
import org.antlr.v4.runtime.atn.*;
 | 
			
		||||
import org.antlr.v4.runtime.dfa.DFA;
 | 
			
		||||
import org.antlr.v4.runtime.misc.*;
 | 
			
		||||
 | 
			
		||||
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 | 
			
		||||
public class BasicLexer extends Lexer {
 | 
			
		||||
	static { RuntimeMetaData.checkVersion("4.7", RuntimeMetaData.VERSION); }
 | 
			
		||||
 | 
			
		||||
	protected static final DFA[] _decisionToDFA;
 | 
			
		||||
	protected static final PredictionContextCache _sharedContextCache =
 | 
			
		||||
		new PredictionContextCache();
 | 
			
		||||
	public static final int
 | 
			
		||||
		PAROPEN=1, PARCLOSE=2, BRAOPEN=3, BRACLOSE=4, IN=5, OUT=6, IFOPEN=7, IFTRUE=8, 
 | 
			
		||||
		IFFALSE=9, IFCLOSE=10, WHILEOPEN=11, WHILETRUE=12, WHILECLOSE=13, PLUS=14, 
 | 
			
		||||
		MINUS=15, NOT=16, MULTIPLY=17, DIVIDE=18, MODULO=19, LEQ=20, GTE=21, NEQ=22, 
 | 
			
		||||
		EQ=23, LT=24, GT=25, AND=26, OR=27, DECLARE=28, INTTYPE=29, BOOLTYPE=30, 
 | 
			
		||||
		CHARTYPE=31, ASSIGN=32, COMPOUND=33, LISTDELIM=34, CHAR=35, TRUE=36, FALSE=37, 
 | 
			
		||||
		IDENTIFIER=38, LITERAL10=39, WHITESPACE=40, LINECOMMENT=41, BLOCKCOMMENT=42;
 | 
			
		||||
	public static String[] channelNames = {
 | 
			
		||||
		"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	public static String[] modeNames = {
 | 
			
		||||
		"DEFAULT_MODE"
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	public static final String[] ruleNames = {
 | 
			
		||||
		"PAROPEN", "PARCLOSE", "BRAOPEN", "BRACLOSE", "IN", "OUT", "IFOPEN", "IFTRUE", 
 | 
			
		||||
		"IFFALSE", "IFCLOSE", "WHILEOPEN", "WHILETRUE", "WHILECLOSE", "PLUS", 
 | 
			
		||||
		"MINUS", "NOT", "MULTIPLY", "DIVIDE", "MODULO", "LEQ", "GTE", "NEQ", "EQ", 
 | 
			
		||||
		"LT", "GT", "AND", "OR", "DECLARE", "INTTYPE", "BOOLTYPE", "CHARTYPE", 
 | 
			
		||||
		"ASSIGN", "COMPOUND", "LISTDELIM", "CHAR", "TRUE", "FALSE", "IDENTIFIER", 
 | 
			
		||||
		"LITERAL10", "WHITESPACE", "LINECOMMENT", "BLOCKCOMMENT"
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	private static final String[] _LITERAL_NAMES = {
 | 
			
		||||
		null, "'('", "')'", "'{'", "'}'", "'read'", "'print'", "'if'", "'then'", 
 | 
			
		||||
		"'else'", "'fi'", "'while'", "'do'", "'od'", "'+'", "'-'", "'!'", "'*'", 
 | 
			
		||||
		"'/'", "'%'", "'<='", "'>='", "'<>'", "'=='", "'<'", "'>'", "'&&'", "'||'", 
 | 
			
		||||
		"'var'", "'int'", "'bool'", "'char'", "':='", "';'", "','", null, "'true'", 
 | 
			
		||||
		"'false'"
 | 
			
		||||
	};
 | 
			
		||||
	private static final String[] _SYMBOLIC_NAMES = {
 | 
			
		||||
		null, "PAROPEN", "PARCLOSE", "BRAOPEN", "BRACLOSE", "IN", "OUT", "IFOPEN", 
 | 
			
		||||
		"IFTRUE", "IFFALSE", "IFCLOSE", "WHILEOPEN", "WHILETRUE", "WHILECLOSE", 
 | 
			
		||||
		"PLUS", "MINUS", "NOT", "MULTIPLY", "DIVIDE", "MODULO", "LEQ", "GTE", 
 | 
			
		||||
		"NEQ", "EQ", "LT", "GT", "AND", "OR", "DECLARE", "INTTYPE", "BOOLTYPE", 
 | 
			
		||||
		"CHARTYPE", "ASSIGN", "COMPOUND", "LISTDELIM", "CHAR", "TRUE", "FALSE", 
 | 
			
		||||
		"IDENTIFIER", "LITERAL10", "WHITESPACE", "LINECOMMENT", "BLOCKCOMMENT"
 | 
			
		||||
	};
 | 
			
		||||
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @deprecated Use {@link #VOCABULARY} instead.
 | 
			
		||||
	 */
 | 
			
		||||
	@Deprecated
 | 
			
		||||
	public static final String[] tokenNames;
 | 
			
		||||
	static {
 | 
			
		||||
		tokenNames = new String[_SYMBOLIC_NAMES.length];
 | 
			
		||||
		for (int i = 0; i < tokenNames.length; i++) {
 | 
			
		||||
			tokenNames[i] = VOCABULARY.getLiteralName(i);
 | 
			
		||||
			if (tokenNames[i] == null) {
 | 
			
		||||
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (tokenNames[i] == null) {
 | 
			
		||||
				tokenNames[i] = "<INVALID>";
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	@Deprecated
 | 
			
		||||
	public String[] getTokenNames() {
 | 
			
		||||
		return tokenNames;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
 | 
			
		||||
	public Vocabulary getVocabulary() {
 | 
			
		||||
		return VOCABULARY;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	public BasicLexer(CharStream input) {
 | 
			
		||||
		super(input);
 | 
			
		||||
		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getGrammarFileName() { return "Basic.g4"; }
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String[] getRuleNames() { return ruleNames; }
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String getSerializedATN() { return _serializedATN; }
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String[] getChannelNames() { return channelNames; }
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public String[] getModeNames() { return modeNames; }
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public ATN getATN() { return _ATN; }
 | 
			
		||||
 | 
			
		||||
	public static final String _serializedATN =
 | 
			
		||||
		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2,\u00fe\b\1\4\2\t"+
 | 
			
		||||
		"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
 | 
			
		||||
		"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
 | 
			
		||||
		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
 | 
			
		||||
		"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
 | 
			
		||||
		"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\3"+
 | 
			
		||||
		"\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7"+
 | 
			
		||||
		"\3\7\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13"+
 | 
			
		||||
		"\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\20\3\20"+
 | 
			
		||||
		"\3\21\3\21\3\22\3\22\3\23\3\23\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3\26"+
 | 
			
		||||
		"\3\27\3\27\3\27\3\30\3\30\3\30\3\31\3\31\3\32\3\32\3\33\3\33\3\33\3\34"+
 | 
			
		||||
		"\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3\37"+
 | 
			
		||||
		"\3\37\3 \3 \3 \3 \3 \3!\3!\3!\3\"\3\"\3#\3#\3$\3$\3$\3$\3%\3%\3%\3%\3"+
 | 
			
		||||
		"%\3&\3&\3&\3&\3&\3&\3\'\3\'\7\'\u00d3\n\'\f\'\16\'\u00d6\13\'\3(\3(\3"+
 | 
			
		||||
		"(\7(\u00db\n(\f(\16(\u00de\13(\5(\u00e0\n(\3)\3)\3)\3)\3*\3*\3*\3*\7*"+
 | 
			
		||||
		"\u00ea\n*\f*\16*\u00ed\13*\3*\3*\3+\3+\3+\3+\7+\u00f5\n+\f+\16+\u00f8"+
 | 
			
		||||
		"\13+\3+\3+\3+\3+\3+\3\u00f6\2,\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13"+
 | 
			
		||||
		"\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61"+
 | 
			
		||||
		"\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,\3\2\b\5\2C\\"+
 | 
			
		||||
		"aac|\6\2\62;C\\aac|\3\2\63;\3\2\62;\5\2\13\f\17\17\"\"\4\2\f\f\17\17\2"+
 | 
			
		||||
		"\u0102\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2"+
 | 
			
		||||
		"\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3"+
 | 
			
		||||
		"\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2"+
 | 
			
		||||
		"\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2"+
 | 
			
		||||
		"/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2"+
 | 
			
		||||
		"\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2"+
 | 
			
		||||
		"G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3"+
 | 
			
		||||
		"\2\2\2\2U\3\2\2\2\3W\3\2\2\2\5Y\3\2\2\2\7[\3\2\2\2\t]\3\2\2\2\13_\3\2"+
 | 
			
		||||
		"\2\2\rd\3\2\2\2\17j\3\2\2\2\21m\3\2\2\2\23r\3\2\2\2\25w\3\2\2\2\27z\3"+
 | 
			
		||||
		"\2\2\2\31\u0080\3\2\2\2\33\u0083\3\2\2\2\35\u0086\3\2\2\2\37\u0088\3\2"+
 | 
			
		||||
		"\2\2!\u008a\3\2\2\2#\u008c\3\2\2\2%\u008e\3\2\2\2\'\u0090\3\2\2\2)\u0092"+
 | 
			
		||||
		"\3\2\2\2+\u0095\3\2\2\2-\u0098\3\2\2\2/\u009b\3\2\2\2\61\u009e\3\2\2\2"+
 | 
			
		||||
		"\63\u00a0\3\2\2\2\65\u00a2\3\2\2\2\67\u00a5\3\2\2\29\u00a8\3\2\2\2;\u00ac"+
 | 
			
		||||
		"\3\2\2\2=\u00b0\3\2\2\2?\u00b5\3\2\2\2A\u00ba\3\2\2\2C\u00bd\3\2\2\2E"+
 | 
			
		||||
		"\u00bf\3\2\2\2G\u00c1\3\2\2\2I\u00c5\3\2\2\2K\u00ca\3\2\2\2M\u00d0\3\2"+
 | 
			
		||||
		"\2\2O\u00df\3\2\2\2Q\u00e1\3\2\2\2S\u00e5\3\2\2\2U\u00f0\3\2\2\2WX\7*"+
 | 
			
		||||
		"\2\2X\4\3\2\2\2YZ\7+\2\2Z\6\3\2\2\2[\\\7}\2\2\\\b\3\2\2\2]^\7\177\2\2"+
 | 
			
		||||
		"^\n\3\2\2\2_`\7t\2\2`a\7g\2\2ab\7c\2\2bc\7f\2\2c\f\3\2\2\2de\7r\2\2ef"+
 | 
			
		||||
		"\7t\2\2fg\7k\2\2gh\7p\2\2hi\7v\2\2i\16\3\2\2\2jk\7k\2\2kl\7h\2\2l\20\3"+
 | 
			
		||||
		"\2\2\2mn\7v\2\2no\7j\2\2op\7g\2\2pq\7p\2\2q\22\3\2\2\2rs\7g\2\2st\7n\2"+
 | 
			
		||||
		"\2tu\7u\2\2uv\7g\2\2v\24\3\2\2\2wx\7h\2\2xy\7k\2\2y\26\3\2\2\2z{\7y\2"+
 | 
			
		||||
		"\2{|\7j\2\2|}\7k\2\2}~\7n\2\2~\177\7g\2\2\177\30\3\2\2\2\u0080\u0081\7"+
 | 
			
		||||
		"f\2\2\u0081\u0082\7q\2\2\u0082\32\3\2\2\2\u0083\u0084\7q\2\2\u0084\u0085"+
 | 
			
		||||
		"\7f\2\2\u0085\34\3\2\2\2\u0086\u0087\7-\2\2\u0087\36\3\2\2\2\u0088\u0089"+
 | 
			
		||||
		"\7/\2\2\u0089 \3\2\2\2\u008a\u008b\7#\2\2\u008b\"\3\2\2\2\u008c\u008d"+
 | 
			
		||||
		"\7,\2\2\u008d$\3\2\2\2\u008e\u008f\7\61\2\2\u008f&\3\2\2\2\u0090\u0091"+
 | 
			
		||||
		"\7\'\2\2\u0091(\3\2\2\2\u0092\u0093\7>\2\2\u0093\u0094\7?\2\2\u0094*\3"+
 | 
			
		||||
		"\2\2\2\u0095\u0096\7@\2\2\u0096\u0097\7?\2\2\u0097,\3\2\2\2\u0098\u0099"+
 | 
			
		||||
		"\7>\2\2\u0099\u009a\7@\2\2\u009a.\3\2\2\2\u009b\u009c\7?\2\2\u009c\u009d"+
 | 
			
		||||
		"\7?\2\2\u009d\60\3\2\2\2\u009e\u009f\7>\2\2\u009f\62\3\2\2\2\u00a0\u00a1"+
 | 
			
		||||
		"\7@\2\2\u00a1\64\3\2\2\2\u00a2\u00a3\7(\2\2\u00a3\u00a4\7(\2\2\u00a4\66"+
 | 
			
		||||
		"\3\2\2\2\u00a5\u00a6\7~\2\2\u00a6\u00a7\7~\2\2\u00a78\3\2\2\2\u00a8\u00a9"+
 | 
			
		||||
		"\7x\2\2\u00a9\u00aa\7c\2\2\u00aa\u00ab\7t\2\2\u00ab:\3\2\2\2\u00ac\u00ad"+
 | 
			
		||||
		"\7k\2\2\u00ad\u00ae\7p\2\2\u00ae\u00af\7v\2\2\u00af<\3\2\2\2\u00b0\u00b1"+
 | 
			
		||||
		"\7d\2\2\u00b1\u00b2\7q\2\2\u00b2\u00b3\7q\2\2\u00b3\u00b4\7n\2\2\u00b4"+
 | 
			
		||||
		">\3\2\2\2\u00b5\u00b6\7e\2\2\u00b6\u00b7\7j\2\2\u00b7\u00b8\7c\2\2\u00b8"+
 | 
			
		||||
		"\u00b9\7t\2\2\u00b9@\3\2\2\2\u00ba\u00bb\7<\2\2\u00bb\u00bc\7?\2\2\u00bc"+
 | 
			
		||||
		"B\3\2\2\2\u00bd\u00be\7=\2\2\u00beD\3\2\2\2\u00bf\u00c0\7.\2\2\u00c0F"+
 | 
			
		||||
		"\3\2\2\2\u00c1\u00c2\7)\2\2\u00c2\u00c3\13\2\2\2\u00c3\u00c4\7)\2\2\u00c4"+
 | 
			
		||||
		"H\3\2\2\2\u00c5\u00c6\7v\2\2\u00c6\u00c7\7t\2\2\u00c7\u00c8\7w\2\2\u00c8"+
 | 
			
		||||
		"\u00c9\7g\2\2\u00c9J\3\2\2\2\u00ca\u00cb\7h\2\2\u00cb\u00cc\7c\2\2\u00cc"+
 | 
			
		||||
		"\u00cd\7n\2\2\u00cd\u00ce\7u\2\2\u00ce\u00cf\7g\2\2\u00cfL\3\2\2\2\u00d0"+
 | 
			
		||||
		"\u00d4\t\2\2\2\u00d1\u00d3\t\3\2\2\u00d2\u00d1\3\2\2\2\u00d3\u00d6\3\2"+
 | 
			
		||||
		"\2\2\u00d4\u00d2\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5N\3\2\2\2\u00d6\u00d4"+
 | 
			
		||||
		"\3\2\2\2\u00d7\u00e0\7\62\2\2\u00d8\u00dc\t\4\2\2\u00d9\u00db\t\5\2\2"+
 | 
			
		||||
		"\u00da\u00d9\3\2\2\2\u00db\u00de\3\2\2\2\u00dc\u00da\3\2\2\2\u00dc\u00dd"+
 | 
			
		||||
		"\3\2\2\2\u00dd\u00e0\3\2\2\2\u00de\u00dc\3\2\2\2\u00df\u00d7\3\2\2\2\u00df"+
 | 
			
		||||
		"\u00d8\3\2\2\2\u00e0P\3\2\2\2\u00e1\u00e2\t\6\2\2\u00e2\u00e3\3\2\2\2"+
 | 
			
		||||
		"\u00e3\u00e4\b)\2\2\u00e4R\3\2\2\2\u00e5\u00e6\7\61\2\2\u00e6\u00e7\7"+
 | 
			
		||||
		"\61\2\2\u00e7\u00eb\3\2\2\2\u00e8\u00ea\n\7\2\2\u00e9\u00e8\3\2\2\2\u00ea"+
 | 
			
		||||
		"\u00ed\3\2\2\2\u00eb\u00e9\3\2\2\2\u00eb\u00ec\3\2\2\2\u00ec\u00ee\3\2"+
 | 
			
		||||
		"\2\2\u00ed\u00eb\3\2\2\2\u00ee\u00ef\b*\2\2\u00efT\3\2\2\2\u00f0\u00f1"+
 | 
			
		||||
		"\7\61\2\2\u00f1\u00f2\7,\2\2\u00f2\u00f6\3\2\2\2\u00f3\u00f5\13\2\2\2"+
 | 
			
		||||
		"\u00f4\u00f3\3\2\2\2\u00f5\u00f8\3\2\2\2\u00f6\u00f7\3\2\2\2\u00f6\u00f4"+
 | 
			
		||||
		"\3\2\2\2\u00f7\u00f9\3\2\2\2\u00f8\u00f6\3\2\2\2\u00f9\u00fa\7,\2\2\u00fa"+
 | 
			
		||||
		"\u00fb\7\61\2\2\u00fb\u00fc\3\2\2\2\u00fc\u00fd\b+\2\2\u00fdV\3\2\2\2"+
 | 
			
		||||
		"\b\2\u00d4\u00dc\u00df\u00eb\u00f6\3\b\2\2";
 | 
			
		||||
	public static final ATN _ATN =
 | 
			
		||||
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
 | 
			
		||||
	static {
 | 
			
		||||
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
 | 
			
		||||
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
 | 
			
		||||
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
PAROPEN=1
 | 
			
		||||
PARCLOSE=2
 | 
			
		||||
BRAOPEN=3
 | 
			
		||||
BRACLOSE=4
 | 
			
		||||
IN=5
 | 
			
		||||
OUT=6
 | 
			
		||||
IFOPEN=7
 | 
			
		||||
IFTRUE=8
 | 
			
		||||
IFFALSE=9
 | 
			
		||||
IFCLOSE=10
 | 
			
		||||
WHILEOPEN=11
 | 
			
		||||
WHILETRUE=12
 | 
			
		||||
WHILECLOSE=13
 | 
			
		||||
PLUS=14
 | 
			
		||||
MINUS=15
 | 
			
		||||
NOT=16
 | 
			
		||||
MULTIPLY=17
 | 
			
		||||
DIVIDE=18
 | 
			
		||||
MODULO=19
 | 
			
		||||
LEQ=20
 | 
			
		||||
GTE=21
 | 
			
		||||
NEQ=22
 | 
			
		||||
EQ=23
 | 
			
		||||
LT=24
 | 
			
		||||
GT=25
 | 
			
		||||
AND=26
 | 
			
		||||
OR=27
 | 
			
		||||
DECLARE=28
 | 
			
		||||
INTTYPE=29
 | 
			
		||||
BOOLTYPE=30
 | 
			
		||||
CHARTYPE=31
 | 
			
		||||
ASSIGN=32
 | 
			
		||||
COMPOUND=33
 | 
			
		||||
LISTDELIM=34
 | 
			
		||||
CHAR=35
 | 
			
		||||
TRUE=36
 | 
			
		||||
FALSE=37
 | 
			
		||||
IDENTIFIER=38
 | 
			
		||||
LITERAL10=39
 | 
			
		||||
WHITESPACE=40
 | 
			
		||||
LINECOMMENT=41
 | 
			
		||||
BLOCKCOMMENT=42
 | 
			
		||||
'('=1
 | 
			
		||||
')'=2
 | 
			
		||||
'{'=3
 | 
			
		||||
'}'=4
 | 
			
		||||
'read'=5
 | 
			
		||||
'print'=6
 | 
			
		||||
'if'=7
 | 
			
		||||
'then'=8
 | 
			
		||||
'else'=9
 | 
			
		||||
'fi'=10
 | 
			
		||||
'while'=11
 | 
			
		||||
'do'=12
 | 
			
		||||
'od'=13
 | 
			
		||||
'+'=14
 | 
			
		||||
'-'=15
 | 
			
		||||
'!'=16
 | 
			
		||||
'*'=17
 | 
			
		||||
'/'=18
 | 
			
		||||
'%'=19
 | 
			
		||||
'<='=20
 | 
			
		||||
'>='=21
 | 
			
		||||
'<>'=22
 | 
			
		||||
'=='=23
 | 
			
		||||
'<'=24
 | 
			
		||||
'>'=25
 | 
			
		||||
'&&'=26
 | 
			
		||||
'||'=27
 | 
			
		||||
'var'=28
 | 
			
		||||
'int'=29
 | 
			
		||||
'bool'=30
 | 
			
		||||
'char'=31
 | 
			
		||||
':='=32
 | 
			
		||||
';'=33
 | 
			
		||||
','=34
 | 
			
		||||
'true'=36
 | 
			
		||||
'false'=37
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -0,0 +1,164 @@
 | 
			
		|||
// Generated from Basic.g4 by ANTLR 4.7
 | 
			
		||||
package pp.s1184725.boppi;
 | 
			
		||||
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This interface defines a complete generic visitor for a parse tree produced
 | 
			
		||||
 * by {@link BasicParser}.
 | 
			
		||||
 *
 | 
			
		||||
 * @param <T> The return type of the visit operation. Use {@link Void} for
 | 
			
		||||
 * operations with no return type.
 | 
			
		||||
 */
 | 
			
		||||
public interface BasicVisitor<T> extends ParseTreeVisitor<T> {
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by {@link BasicParser#program}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitProgram(BasicParser.ProgramContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code parens}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitParens(BasicParser.ParensContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code read}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitRead(BasicParser.ReadContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code declare}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitDeclare(BasicParser.DeclareContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code bool}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitBool(BasicParser.BoolContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code var}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitVar(BasicParser.VarContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code infix2}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitInfix2(BasicParser.Infix2Context ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code infix3}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitInfix3(BasicParser.Infix3Context ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code infix1}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitInfix1(BasicParser.Infix1Context ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code while}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitWhile(BasicParser.WhileContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code compound}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitCompound(BasicParser.CompoundContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code infix4}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitInfix4(BasicParser.Infix4Context ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code infix5}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitInfix5(BasicParser.Infix5Context ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code number}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitNumber(BasicParser.NumberContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code char}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitChar(BasicParser.CharContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code block}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitBlock(BasicParser.BlockContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code write}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitWrite(BasicParser.WriteContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code if}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitIf(BasicParser.IfContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code prefix1}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitPrefix1(BasicParser.Prefix1Context ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by the {@code assign}
 | 
			
		||||
	 * labeled alternative in {@link BasicParser#expr}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitAssign(BasicParser.AssignContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by {@link BasicParser#type}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitType(BasicParser.TypeContext ctx);
 | 
			
		||||
	/**
 | 
			
		||||
	 * Visit a parse tree produced by {@link BasicParser#variable}.
 | 
			
		||||
	 * @param ctx the parse tree
 | 
			
		||||
	 * @return the visitor result
 | 
			
		||||
	 */
 | 
			
		||||
	T visitVariable(BasicParser.VariableContext ctx);
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue