View

This file was deleted.

Oops, something went wrong.
View
@@ -1,43 +1,64 @@
/* Redline Smalltalk, Copyright (c) James C. Ladd. All rights reserved. See LICENSE in the root of this distribution. */
package st.redline.compiler;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import st.redline.classloader.Source;
import st.redline.compiler.ast.Program;
public class Compiler {
private final Preprocessor preprocessor;
private final Parser parser;
private final AnalyserFactory analyserFactory;
private final Source source;
public Compiler(Preprocessor preprocessor, Parser parser, AnalyserFactory analyserFactory) {
this.preprocessor = preprocessor;
this.parser = parser;
this.analyserFactory = analyserFactory;
public Compiler(Source source) {
this.source = source;
}
public byte[] compile(Source source) {
String preprocessedSource = preprocess(source);
Program rootAstNode = parse(preprocessedSource, source.name());
Analyser analyser = createAnalyser(rootAstNode, source);
return analyser.analyse();
public byte[] compile() {
if (!haveSource())
return null;
return compileSource();
}
private Analyser createAnalyser(Program rootAstNode, Source source) {
return analyserFactory.createAnalyser(analyserFactory, rootAstNode, source);
private byte[] compileSource() {
return generateClass(parsedSourceContents());
}
private Program parse(String preprocessedSource, String name) {
return parser.parse(preprocessedSource, name);
private ParseTree parsedSourceContents() {
return parse(sourceContents());
}
private String preprocess(Source source) {
String className = source.className();
String rawSource = source.contents();
return preprocess(rawSource, className);
private byte[] generateClass(ParseTree tree) {
return createGenerator(tree).generate();
}
private String preprocess(String rawSource, String name) {
return preprocessor.preprocess(rawSource, name);
private Generator createGenerator(ParseTree tree) {
return new Generator(tree, createVisitor());
}
private SmalltalkGeneratingVisitor createVisitor() {
return new SmalltalkGeneratingVisitor(source);
}
private ParseTree parse(String input) {
SmalltalkLexer lexer = new SmalltalkLexer(new ANTLRInputStream(input));
SmalltalkParser parser = new SmalltalkParser(new CommonTokenStream(lexer));
// dump tree
// System.out.println(parser.script().toStringTree(parser));
// System.out.flush();
return parser.script();
}
private String sourceContents() {
String src = source.contents();
// dump pre-processed source
System.out.print(src);
return src;
}
private boolean haveSource() {
return source != null && source.hasContent();
}
}
View
@@ -0,0 +1,20 @@
/* Redline Smalltalk, Copyright (c) James C. Ladd. All rights reserved. See LICENSE in the root of this distribution. */
package st.redline.compiler;
import org.antlr.v4.runtime.tree.ParseTree;
public class Generator {
private final ParseTree tree;
private final SmalltalkVisitor visitor;
public Generator(ParseTree tree, SmalltalkVisitor visitor) {
this.tree = tree;
this.visitor = visitor;
}
public byte[] generate() {
visitor.visit(tree);
return visitor.generatedClassBytes();
}
}
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View
@@ -0,0 +1,53 @@
DYNDICT_START=25
BLOCK_END=5
LT=12
KEYWORD=30
PIPE=8
CARROT=17
LITARR_START=24
COMMENT=3
MINUS=14
CHARACTER_CONSTANT=32
RESERVED_WORD=15
ASSIGNMENT=19
IDENTIFIER=16
HEXDIGIT=29
SEPARATOR=1
BLOCK_START=4
COLON=18
BINARY_SELECTOR=11
DYNARR_START=27
GT=13
DIGIT=28
HASH=20
OPEN_PAREN=7
PERIOD=9
STRING=2
SEMI_COLON=10
DOLLAR=21
HEX=23
CLOSE_PAREN=6
EXP=22
BLOCK_PARAM=31
DYNARR_END=26
'.'=9
'-'=14
')'=6
'('=7
'e'=22
'#('=24
'$'=21
'#'=20
':='=19
'>'=13
'^'=17
']'=5
'}'=26
'|'=8
'<'=12
'['=4
';'=10
'{'=27
':'=18
'#{'=25
'16r'=23
View

Large diffs are not rendered by default.

Oops, something went wrong.
View

Large diffs are not rendered by default.

Oops, something went wrong.
View
@@ -0,0 +1,131 @@
// Generated from Smalltalk.g4 by ANTLR 4.1
package st.redline.compiler;
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 SmalltalkLexer extends Lexer {
protected static final DFA[] _decisionToDFA;
protected static final PredictionContextCache _sharedContextCache =
new PredictionContextCache();
public static final int
SEPARATOR=1, STRING=2, COMMENT=3, BLOCK_START=4, BLOCK_END=5, CLOSE_PAREN=6,
OPEN_PAREN=7, PIPE=8, PERIOD=9, SEMI_COLON=10, BINARY_SELECTOR=11, LT=12,
GT=13, MINUS=14, RESERVED_WORD=15, IDENTIFIER=16, CARROT=17, COLON=18,
ASSIGNMENT=19, HASH=20, DOLLAR=21, EXP=22, HEX=23, LITARR_START=24, DYNDICT_START=25,
DYNARR_END=26, DYNARR_START=27, DIGIT=28, HEXDIGIT=29, KEYWORD=30, BLOCK_PARAM=31,
CHARACTER_CONSTANT=32;
public static String[] modeNames = {
"DEFAULT_MODE"
};
public static final String[] tokenNames = {
"<INVALID>",
"SEPARATOR", "STRING", "COMMENT", "'['", "']'", "')'", "'('", "'|'", "'.'",
"';'", "BINARY_SELECTOR", "'<'", "'>'", "'-'", "RESERVED_WORD", "IDENTIFIER",
"'^'", "':'", "':='", "'#'", "'$'", "'e'", "'16r'", "'#('", "'#{'", "'}'",
"'{'", "DIGIT", "HEXDIGIT", "KEYWORD", "BLOCK_PARAM", "CHARACTER_CONSTANT"
};
public static final String[] ruleNames = {
"SEPARATOR", "STRING", "COMMENT", "BLOCK_START", "BLOCK_END", "CLOSE_PAREN",
"OPEN_PAREN", "PIPE", "PERIOD", "SEMI_COLON", "BINARY_SELECTOR", "LT",
"GT", "MINUS", "RESERVED_WORD", "IDENTIFIER", "CARROT", "COLON", "ASSIGNMENT",
"HASH", "DOLLAR", "EXP", "HEX", "LITARR_START", "DYNDICT_START", "DYNARR_END",
"DYNARR_START", "DIGIT", "HEXDIGIT", "KEYWORD", "BLOCK_PARAM", "CHARACTER_CONSTANT"
};
public SmalltalkLexer(CharStream input) {
super(input);
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
}
@Override
public String getGrammarFileName() { return "Smalltalk.g4"; }
@Override
public String[] getTokenNames() { return tokenNames; }
@Override
public String[] getRuleNames() { return ruleNames; }
@Override
public String[] getModeNames() { return modeNames; }
@Override
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
"\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\2\"\u00bc\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!\3\2\3\2\3\3\3\3\7\3H\n\3\f\3\16\3K\13\3\3\3\3\3\3\4\3\4\7\4Q\n\4\f"+
"\4\16\4T\13\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n"+
"\3\13\3\13\3\f\3\f\3\f\6\fi\n\f\r\f\16\fj\3\r\3\r\3\16\3\16\3\17\3\17"+
"\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+
"\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u0088\n\20\3\21\6\21\u008b\n"+
"\21\r\21\16\21\u008c\3\21\7\21\u0090\n\21\f\21\16\21\u0093\13\21\3\22"+
"\3\22\3\23\3\23\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30"+
"\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35"+
"\3\36\3\36\3\37\3\37\3\37\3 \3 \3 \3!\3!\3!\4IR\"\3\3\1\5\4\1\7\5\1\t"+
"\6\1\13\7\1\r\b\1\17\t\1\21\n\1\23\13\1\25\f\1\27\r\1\31\16\1\33\17\1"+
"\35\20\1\37\21\1!\22\1#\23\1%\24\1\'\25\1)\26\1+\27\1-\30\1/\31\1\61\32"+
"\1\63\33\1\65\34\1\67\35\19\36\1;\37\1= \1?!\1A\"\1\3\2\t\5\2\13\f\17"+
"\17\"\"\t\2\'\',.\61\61>@BB^^\u0080\u0080\5\2((//AA\4\2C\\c|\6\2\62;C"+
"\\aac|\3\2\62;\5\2\62;CHch\u00c6\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"+
"\3C\3\2\2\2\5E\3\2\2\2\7N\3\2\2\2\tW\3\2\2\2\13Y\3\2\2\2\r[\3\2\2\2\17"+
"]\3\2\2\2\21_\3\2\2\2\23a\3\2\2\2\25c\3\2\2\2\27h\3\2\2\2\31l\3\2\2\2"+
"\33n\3\2\2\2\35p\3\2\2\2\37\u0087\3\2\2\2!\u008a\3\2\2\2#\u0094\3\2\2"+
"\2%\u0096\3\2\2\2\'\u0098\3\2\2\2)\u009b\3\2\2\2+\u009d\3\2\2\2-\u009f"+
"\3\2\2\2/\u00a1\3\2\2\2\61\u00a5\3\2\2\2\63\u00a8\3\2\2\2\65\u00ab\3\2"+
"\2\2\67\u00ad\3\2\2\29\u00af\3\2\2\2;\u00b1\3\2\2\2=\u00b3\3\2\2\2?\u00b6"+
"\3\2\2\2A\u00b9\3\2\2\2CD\t\2\2\2D\4\3\2\2\2EI\7)\2\2FH\13\2\2\2GF\3\2"+
"\2\2HK\3\2\2\2IJ\3\2\2\2IG\3\2\2\2JL\3\2\2\2KI\3\2\2\2LM\7)\2\2M\6\3\2"+
"\2\2NR\7$\2\2OQ\13\2\2\2PO\3\2\2\2QT\3\2\2\2RS\3\2\2\2RP\3\2\2\2SU\3\2"+
"\2\2TR\3\2\2\2UV\7$\2\2V\b\3\2\2\2WX\7]\2\2X\n\3\2\2\2YZ\7_\2\2Z\f\3\2"+
"\2\2[\\\7+\2\2\\\16\3\2\2\2]^\7*\2\2^\20\3\2\2\2_`\7~\2\2`\22\3\2\2\2"+
"ab\7\60\2\2b\24\3\2\2\2cd\7=\2\2d\26\3\2\2\2ei\t\3\2\2fi\5\21\t\2gi\t"+
"\4\2\2he\3\2\2\2hf\3\2\2\2hg\3\2\2\2ij\3\2\2\2jh\3\2\2\2jk\3\2\2\2k\30"+
"\3\2\2\2lm\7>\2\2m\32\3\2\2\2no\7@\2\2o\34\3\2\2\2pq\7/\2\2q\36\3\2\2"+
"\2rs\7p\2\2st\7k\2\2t\u0088\7n\2\2uv\7v\2\2vw\7t\2\2wx\7w\2\2x\u0088\7"+
"g\2\2yz\7h\2\2z{\7c\2\2{|\7n\2\2|}\7u\2\2}\u0088\7g\2\2~\177\7u\2\2\177"+
"\u0080\7g\2\2\u0080\u0081\7n\2\2\u0081\u0088\7h\2\2\u0082\u0083\7u\2\2"+
"\u0083\u0084\7w\2\2\u0084\u0085\7r\2\2\u0085\u0086\7g\2\2\u0086\u0088"+
"\7t\2\2\u0087r\3\2\2\2\u0087u\3\2\2\2\u0087y\3\2\2\2\u0087~\3\2\2\2\u0087"+
"\u0082\3\2\2\2\u0088 \3\2\2\2\u0089\u008b\t\5\2\2\u008a\u0089\3\2\2\2"+
"\u008b\u008c\3\2\2\2\u008c\u008a\3\2\2\2\u008c\u008d\3\2\2\2\u008d\u0091"+
"\3\2\2\2\u008e\u0090\t\6\2\2\u008f\u008e\3\2\2\2\u0090\u0093\3\2\2\2\u0091"+
"\u008f\3\2\2\2\u0091\u0092\3\2\2\2\u0092\"\3\2\2\2\u0093\u0091\3\2\2\2"+
"\u0094\u0095\7`\2\2\u0095$\3\2\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"+
"*\3\2\2\2\u009d\u009e\7&\2\2\u009e,\3\2\2\2\u009f\u00a0\7g\2\2\u00a0."+
"\3\2\2\2\u00a1\u00a2\7\63\2\2\u00a2\u00a3\78\2\2\u00a3\u00a4\7t\2\2\u00a4"+
"\60\3\2\2\2\u00a5\u00a6\7%\2\2\u00a6\u00a7\7*\2\2\u00a7\62\3\2\2\2\u00a8"+
"\u00a9\7%\2\2\u00a9\u00aa\7}\2\2\u00aa\64\3\2\2\2\u00ab\u00ac\7\177\2"+
"\2\u00ac\66\3\2\2\2\u00ad\u00ae\7}\2\2\u00ae8\3\2\2\2\u00af\u00b0\t\7"+
"\2\2\u00b0:\3\2\2\2\u00b1\u00b2\t\b\2\2\u00b2<\3\2\2\2\u00b3\u00b4\5!"+
"\21\2\u00b4\u00b5\5%\23\2\u00b5>\3\2\2\2\u00b6\u00b7\5%\23\2\u00b7\u00b8"+
"\5!\21\2\u00b8@\3\2\2\2\u00b9\u00ba\5+\26\2\u00ba\u00bb\13\2\2\2\u00bb"+
"B\3\2\2\2\n\2IRhj\u0087\u008c\u0091";
public static final ATN _ATN =
ATNSimulator.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);
}
}
}
View
@@ -0,0 +1,53 @@
DYNDICT_START=25
BLOCK_END=5
LT=12
KEYWORD=30
PIPE=8
CARROT=17
LITARR_START=24
COMMENT=3
MINUS=14
CHARACTER_CONSTANT=32
RESERVED_WORD=15
ASSIGNMENT=19
IDENTIFIER=16
HEXDIGIT=29
SEPARATOR=1
BLOCK_START=4
COLON=18
BINARY_SELECTOR=11
DYNARR_START=27
GT=13
DIGIT=28
HASH=20
OPEN_PAREN=7
PERIOD=9
STRING=2
SEMI_COLON=10
DOLLAR=21
HEX=23
CLOSE_PAREN=6
EXP=22
BLOCK_PARAM=31
DYNARR_END=26
'.'=9
'-'=14
')'=6
'('=7
'e'=22
'#('=24
'$'=21
'#'=20
':='=19
'>'=13
'^'=17
']'=5
'}'=26
'|'=8
'<'=12
'['=4
';'=10
'{'=27
':'=18
'#{'=25
'16r'=23
View

Large diffs are not rendered by default.

Oops, something went wrong.
View
@@ -0,0 +1,364 @@
// Generated from Smalltalk.g4 by ANTLR 4.1
package st.redline.compiler;
import org.antlr.v4.runtime.misc.NotNull;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
/**
* This interface defines a complete generic visitor for a parse tree produced
* by {@link SmalltalkParser}.
*
* @param <T> The return type of the visit operation. Use {@link Void} for
* operations with no return type.
*/
public interface SmalltalkVisitor<T> extends ParseTreeVisitor<T> {
byte[] generatedClassBytes();
/**
* Visit a parse tree produced by {@link SmalltalkParser#symbol}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitSymbol(@NotNull SmalltalkParser.SymbolContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#unaryTail}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitUnaryTail(@NotNull SmalltalkParser.UnaryTailContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#blockParamList}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBlockParamList(@NotNull SmalltalkParser.BlockParamListContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#keywords}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitKeywords(@NotNull SmalltalkParser.KeywordsContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#keywordSend}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitKeywordSend(@NotNull SmalltalkParser.KeywordSendContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#unaryMessage}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitUnaryMessage(@NotNull SmalltalkParser.UnaryMessageContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#temps}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitTemps(@NotNull SmalltalkParser.TempsContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#stFloat}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStFloat(@NotNull SmalltalkParser.StFloatContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#reference}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitReference(@NotNull SmalltalkParser.ReferenceContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#number}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitNumber(@NotNull SmalltalkParser.NumberContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#dynamicDictionary}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitDynamicDictionary(@NotNull SmalltalkParser.DynamicDictionaryContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#block}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBlock(@NotNull SmalltalkParser.BlockContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#hex}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitHex(@NotNull SmalltalkParser.HexContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#StatementExpressions}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStatementExpressions(@NotNull SmalltalkParser.StatementExpressionsContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#literalArrayRest}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitLiteralArrayRest(@NotNull SmalltalkParser.LiteralArrayRestContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#cascade}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitCascade(@NotNull SmalltalkParser.CascadeContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#stInteger}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStInteger(@NotNull SmalltalkParser.StIntegerContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#binarySend}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBinarySend(@NotNull SmalltalkParser.BinarySendContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#expressions}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitExpressions(@NotNull SmalltalkParser.ExpressionsContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#script}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitScript(@NotNull SmalltalkParser.ScriptContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#StatementExpressionsAnswer}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStatementExpressionsAnswer(@NotNull SmalltalkParser.StatementExpressionsAnswerContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#sequence}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitSequence(@NotNull SmalltalkParser.SequenceContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#expressionList}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitExpressionList(@NotNull SmalltalkParser.ExpressionListContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#numberExp}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitNumberExp(@NotNull SmalltalkParser.NumberExpContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#string}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitString(@NotNull SmalltalkParser.StringContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#primitive}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitPrimitive(@NotNull SmalltalkParser.PrimitiveContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#unarySend}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitUnarySend(@NotNull SmalltalkParser.UnarySendContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#keywordMessage}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitKeywordMessage(@NotNull SmalltalkParser.KeywordMessageContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#subexpression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitSubexpression(@NotNull SmalltalkParser.SubexpressionContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#literal}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitLiteral(@NotNull SmalltalkParser.LiteralContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#bareSymbol}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBareSymbol(@NotNull SmalltalkParser.BareSymbolContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#dynamicArray}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitDynamicArray(@NotNull SmalltalkParser.DynamicArrayContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#ws}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitWs(@NotNull SmalltalkParser.WsContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#pseudoVariable}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitPseudoVariable(@NotNull SmalltalkParser.PseudoVariableContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#expression}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitExpression(@NotNull SmalltalkParser.ExpressionContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#StatementAnswer}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitStatementAnswer(@NotNull SmalltalkParser.StatementAnswerContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#bareLiteralArray}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBareLiteralArray(@NotNull SmalltalkParser.BareLiteralArrayContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#unarySelector}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitUnarySelector(@NotNull SmalltalkParser.UnarySelectorContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#assignment}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAssignment(@NotNull SmalltalkParser.AssignmentContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#message}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitMessage(@NotNull SmalltalkParser.MessageContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#binaryMessage}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBinaryMessage(@NotNull SmalltalkParser.BinaryMessageContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#charConstant}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitCharConstant(@NotNull SmalltalkParser.CharConstantContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#parsetimeLiteral}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitParsetimeLiteral(@NotNull SmalltalkParser.ParsetimeLiteralContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#answer}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitAnswer(@NotNull SmalltalkParser.AnswerContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#keywordPair}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitKeywordPair(@NotNull SmalltalkParser.KeywordPairContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#binaryTail}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitBinaryTail(@NotNull SmalltalkParser.BinaryTailContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#literalArray}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitLiteralArray(@NotNull SmalltalkParser.LiteralArrayContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#variable}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitVariable(@NotNull SmalltalkParser.VariableContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#runtimeLiteral}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitRuntimeLiteral(@NotNull SmalltalkParser.RuntimeLiteralContext ctx);
/**
* Visit a parse tree produced by {@link SmalltalkParser#operand}.
* @param ctx the parse tree
* @return the visitor result
*/
T visitOperand(@NotNull SmalltalkParser.OperandContext ctx);
}
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
View

This file was deleted.

Oops, something went wrong.
Oops, something went wrong.