forked from ph7n2ofui/SysyCompiler_Arm
parent
c0668ff437
commit
2c0ef95d97
@ -1,28 +0,0 @@
|
||||
token literal names:
|
||||
null
|
||||
','
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
null
|
||||
|
||||
token symbolic names:
|
||||
null
|
||||
Comma
|
||||
IntLiteral
|
||||
FloatLiteral
|
||||
STRING
|
||||
WS
|
||||
LINE_COMMENT
|
||||
COMMENT
|
||||
|
||||
rule names:
|
||||
funcRParams
|
||||
funcRParam
|
||||
number
|
||||
|
||||
|
||||
atn:
|
||||
[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 9, 23, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 3, 2, 3, 2, 3, 2, 7, 2, 12, 10, 2, 12, 2, 14, 2, 15, 11, 2, 3, 3, 3, 3, 5, 3, 19, 10, 3, 3, 4, 3, 4, 3, 4, 2, 2, 5, 2, 4, 6, 2, 3, 3, 2, 4, 5, 2, 21, 2, 8, 3, 2, 2, 2, 4, 18, 3, 2, 2, 2, 6, 20, 3, 2, 2, 2, 8, 13, 5, 4, 3, 2, 9, 10, 7, 3, 2, 2, 10, 12, 5, 4, 3, 2, 11, 9, 3, 2, 2, 2, 12, 15, 3, 2, 2, 2, 13, 11, 3, 2, 2, 2, 13, 14, 3, 2, 2, 2, 14, 3, 3, 2, 2, 2, 15, 13, 3, 2, 2, 2, 16, 19, 5, 6, 4, 2, 17, 19, 7, 6, 2, 2, 18, 16, 3, 2, 2, 2, 18, 17, 3, 2, 2, 2, 19, 5, 3, 2, 2, 2, 20, 21, 9, 2, 2, 2, 21, 7, 3, 2, 2, 2, 4, 13, 18]
|
||||
@ -1,8 +0,0 @@
|
||||
Comma=1
|
||||
IntLiteral=2
|
||||
FloatLiteral=3
|
||||
STRING=4
|
||||
WS=5
|
||||
LINE_COMMENT=6
|
||||
COMMENT=7
|
||||
','=1
|
||||
File diff suppressed because one or more lines are too long
@ -1,165 +0,0 @@
|
||||
// Generated from /home/xsu/workspace/sysy/sysy/src/SysY.g4 by ANTLR 4.9.2
|
||||
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 SysYLexer extends Lexer {
|
||||
static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); }
|
||||
|
||||
protected static final DFA[] _decisionToDFA;
|
||||
protected static final PredictionContextCache _sharedContextCache =
|
||||
new PredictionContextCache();
|
||||
public static final int
|
||||
Comma=1, IntLiteral=2, FloatLiteral=3, STRING=4, WS=5, LINE_COMMENT=6,
|
||||
COMMENT=7;
|
||||
public static String[] channelNames = {
|
||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||
};
|
||||
|
||||
public static String[] modeNames = {
|
||||
"DEFAULT_MODE"
|
||||
};
|
||||
|
||||
private static String[] makeRuleNames() {
|
||||
return new String[] {
|
||||
"Comma", "IntLiteral", "HexadecimalDigits", "ExponentPart", "FractionPart",
|
||||
"FloatLiteral", "STRING", "ESC", "WS", "LINE_COMMENT", "COMMENT"
|
||||
};
|
||||
}
|
||||
public static final String[] ruleNames = makeRuleNames();
|
||||
|
||||
private static String[] makeLiteralNames() {
|
||||
return new String[] {
|
||||
null, "','"
|
||||
};
|
||||
}
|
||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||
private static String[] makeSymbolicNames() {
|
||||
return new String[] {
|
||||
null, "Comma", "IntLiteral", "FloatLiteral", "STRING", "WS", "LINE_COMMENT",
|
||||
"COMMENT"
|
||||
};
|
||||
}
|
||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||
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 SysYLexer(CharStream input) {
|
||||
super(input);
|
||||
_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrammarFileName() { return "SysY.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\t\u00a5\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\3\2\3\2\3\3\6\3\35\n\3\r\3\16\3\36\3\3\3\3\3\3\3\3\6\3%"+
|
||||
"\n\3\r\3\16\3&\3\3\3\3\3\3\3\3\6\3-\n\3\r\3\16\3.\5\3\61\n\3\3\4\3\4\3"+
|
||||
"\4\3\4\6\4\67\n\4\r\4\16\48\3\4\3\4\3\4\3\4\6\4?\n\4\r\4\16\4@\5\4C\n"+
|
||||
"\4\3\5\3\5\3\5\6\5H\n\5\r\5\16\5I\3\6\7\6M\n\6\f\6\16\6P\13\6\3\6\3\6"+
|
||||
"\6\6T\n\6\r\6\16\6U\3\6\6\6Y\n\6\r\6\16\6Z\3\6\5\6^\n\6\3\7\3\7\5\7b\n"+
|
||||
"\7\3\7\6\7e\n\7\r\7\16\7f\3\7\3\7\5\7k\n\7\3\7\3\7\3\7\3\7\3\7\5\7r\n"+
|
||||
"\7\3\b\3\b\3\b\7\bw\n\b\f\b\16\bz\13\b\3\b\3\b\3\t\3\t\3\t\3\t\5\t\u0082"+
|
||||
"\n\t\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\7\13\u008c\n\13\f\13\16\13\u008f"+
|
||||
"\13\13\3\13\5\13\u0092\n\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\7\f\u009c"+
|
||||
"\n\f\f\f\16\f\u009f\13\f\3\f\3\f\3\f\3\f\3\f\5x\u008d\u009d\2\r\3\3\5"+
|
||||
"\4\7\2\t\2\13\2\r\5\17\6\21\2\23\7\25\b\27\t\3\2\7\3\2\62;\5\2\62;CHc"+
|
||||
"h\4\2GGgg\4\2--//\5\2\13\f\17\17\"\"\2\u00b9\2\3\3\2\2\2\2\5\3\2\2\2\2"+
|
||||
"\r\3\2\2\2\2\17\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\3\31\3"+
|
||||
"\2\2\2\5\60\3\2\2\2\7B\3\2\2\2\tD\3\2\2\2\13]\3\2\2\2\rq\3\2\2\2\17s\3"+
|
||||
"\2\2\2\21\u0081\3\2\2\2\23\u0083\3\2\2\2\25\u0087\3\2\2\2\27\u0097\3\2"+
|
||||
"\2\2\31\32\7.\2\2\32\4\3\2\2\2\33\35\t\2\2\2\34\33\3\2\2\2\35\36\3\2\2"+
|
||||
"\2\36\34\3\2\2\2\36\37\3\2\2\2\37\61\3\2\2\2 !\7\62\2\2!\"\7z\2\2\"$\3"+
|
||||
"\2\2\2#%\t\3\2\2$#\3\2\2\2%&\3\2\2\2&$\3\2\2\2&\'\3\2\2\2\'\61\3\2\2\2"+
|
||||
"()\7\62\2\2)*\7Z\2\2*,\3\2\2\2+-\t\3\2\2,+\3\2\2\2-.\3\2\2\2.,\3\2\2\2"+
|
||||
"./\3\2\2\2/\61\3\2\2\2\60\34\3\2\2\2\60 \3\2\2\2\60(\3\2\2\2\61\6\3\2"+
|
||||
"\2\2\62\63\7\62\2\2\63\64\7z\2\2\64\66\3\2\2\2\65\67\t\3\2\2\66\65\3\2"+
|
||||
"\2\2\678\3\2\2\28\66\3\2\2\289\3\2\2\29C\3\2\2\2:;\7\62\2\2;<\7Z\2\2<"+
|
||||
">\3\2\2\2=?\t\3\2\2>=\3\2\2\2?@\3\2\2\2@>\3\2\2\2@A\3\2\2\2AC\3\2\2\2"+
|
||||
"B\62\3\2\2\2B:\3\2\2\2C\b\3\2\2\2DE\t\4\2\2EG\t\5\2\2FH\t\2\2\2GF\3\2"+
|
||||
"\2\2HI\3\2\2\2IG\3\2\2\2IJ\3\2\2\2J\n\3\2\2\2KM\t\2\2\2LK\3\2\2\2MP\3"+
|
||||
"\2\2\2NL\3\2\2\2NO\3\2\2\2OQ\3\2\2\2PN\3\2\2\2QS\7\60\2\2RT\t\2\2\2SR"+
|
||||
"\3\2\2\2TU\3\2\2\2US\3\2\2\2UV\3\2\2\2V^\3\2\2\2WY\t\2\2\2XW\3\2\2\2Y"+
|
||||
"Z\3\2\2\2ZX\3\2\2\2Z[\3\2\2\2[\\\3\2\2\2\\^\7\60\2\2]N\3\2\2\2]X\3\2\2"+
|
||||
"\2^\f\3\2\2\2_a\5\13\6\2`b\5\t\5\2a`\3\2\2\2ab\3\2\2\2br\3\2\2\2ce\t\2"+
|
||||
"\2\2dc\3\2\2\2ef\3\2\2\2fd\3\2\2\2fg\3\2\2\2gh\3\2\2\2hr\5\t\5\2ik\5\7"+
|
||||
"\4\2ji\3\2\2\2jk\3\2\2\2kl\3\2\2\2lm\7\60\2\2mr\5\7\4\2no\5\7\4\2op\7"+
|
||||
"\60\2\2pr\3\2\2\2q_\3\2\2\2qd\3\2\2\2qj\3\2\2\2qn\3\2\2\2r\16\3\2\2\2"+
|
||||
"sx\7$\2\2tw\5\21\t\2uw\13\2\2\2vt\3\2\2\2vu\3\2\2\2wz\3\2\2\2xy\3\2\2"+
|
||||
"\2xv\3\2\2\2y{\3\2\2\2zx\3\2\2\2{|\7$\2\2|\20\3\2\2\2}~\7^\2\2~\u0082"+
|
||||
"\7$\2\2\177\u0080\7^\2\2\u0080\u0082\7^\2\2\u0081}\3\2\2\2\u0081\177\3"+
|
||||
"\2\2\2\u0082\22\3\2\2\2\u0083\u0084\t\6\2\2\u0084\u0085\3\2\2\2\u0085"+
|
||||
"\u0086\b\n\2\2\u0086\24\3\2\2\2\u0087\u0088\7\61\2\2\u0088\u0089\7\61"+
|
||||
"\2\2\u0089\u008d\3\2\2\2\u008a\u008c\13\2\2\2\u008b\u008a\3\2\2\2\u008c"+
|
||||
"\u008f\3\2\2\2\u008d\u008e\3\2\2\2\u008d\u008b\3\2\2\2\u008e\u0091\3\2"+
|
||||
"\2\2\u008f\u008d\3\2\2\2\u0090\u0092\7\17\2\2\u0091\u0090\3\2\2\2\u0091"+
|
||||
"\u0092\3\2\2\2\u0092\u0093\3\2\2\2\u0093\u0094\7\f\2\2\u0094\u0095\3\2"+
|
||||
"\2\2\u0095\u0096\b\13\2\2\u0096\26\3\2\2\2\u0097\u0098\7\61\2\2\u0098"+
|
||||
"\u0099\7,\2\2\u0099\u009d\3\2\2\2\u009a\u009c\13\2\2\2\u009b\u009a\3\2"+
|
||||
"\2\2\u009c\u009f\3\2\2\2\u009d\u009e\3\2\2\2\u009d\u009b\3\2\2\2\u009e"+
|
||||
"\u00a0\3\2\2\2\u009f\u009d\3\2\2\2\u00a0\u00a1\7,\2\2\u00a1\u00a2\7\61"+
|
||||
"\2\2\u00a2\u00a3\3\2\2\2\u00a3\u00a4\b\f\2\2\u00a4\30\3\2\2\2\31\2\36"+
|
||||
"&.\608@BINUZ]afjqvx\u0081\u008d\u0091\u009d\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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,8 +0,0 @@
|
||||
Comma=1
|
||||
IntLiteral=2
|
||||
FloatLiteral=3
|
||||
STRING=4
|
||||
WS=5
|
||||
LINE_COMMENT=6
|
||||
COMMENT=7
|
||||
','=1
|
||||
@ -1,264 +0,0 @@
|
||||
// Generated from /home/xsu/workspace/sysy/sysy/src/SysY.g4 by ANTLR 4.9.2
|
||||
import org.antlr.v4.runtime.atn.*;
|
||||
import org.antlr.v4.runtime.dfa.DFA;
|
||||
import org.antlr.v4.runtime.*;
|
||||
import org.antlr.v4.runtime.misc.*;
|
||||
import org.antlr.v4.runtime.tree.*;
|
||||
import java.util.List;
|
||||
import java.util.Iterator;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
|
||||
public class SysYParser extends Parser {
|
||||
static { RuntimeMetaData.checkVersion("4.9.2", RuntimeMetaData.VERSION); }
|
||||
|
||||
protected static final DFA[] _decisionToDFA;
|
||||
protected static final PredictionContextCache _sharedContextCache =
|
||||
new PredictionContextCache();
|
||||
public static final int
|
||||
Comma=1, IntLiteral=2, FloatLiteral=3, STRING=4, WS=5, LINE_COMMENT=6,
|
||||
COMMENT=7;
|
||||
public static final int
|
||||
RULE_funcRParams = 0, RULE_funcRParam = 1, RULE_number = 2;
|
||||
private static String[] makeRuleNames() {
|
||||
return new String[] {
|
||||
"funcRParams", "funcRParam", "number"
|
||||
};
|
||||
}
|
||||
public static final String[] ruleNames = makeRuleNames();
|
||||
|
||||
private static String[] makeLiteralNames() {
|
||||
return new String[] {
|
||||
null, "','"
|
||||
};
|
||||
}
|
||||
private static final String[] _LITERAL_NAMES = makeLiteralNames();
|
||||
private static String[] makeSymbolicNames() {
|
||||
return new String[] {
|
||||
null, "Comma", "IntLiteral", "FloatLiteral", "STRING", "WS", "LINE_COMMENT",
|
||||
"COMMENT"
|
||||
};
|
||||
}
|
||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||
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;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrammarFileName() { return "SysY.g4"; }
|
||||
|
||||
@Override
|
||||
public String[] getRuleNames() { return ruleNames; }
|
||||
|
||||
@Override
|
||||
public String getSerializedATN() { return _serializedATN; }
|
||||
|
||||
@Override
|
||||
public ATN getATN() { return _ATN; }
|
||||
|
||||
public SysYParser(TokenStream input) {
|
||||
super(input);
|
||||
_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
|
||||
}
|
||||
|
||||
public static class FuncRParamsContext extends ParserRuleContext {
|
||||
public List<FuncRParamContext> funcRParam() {
|
||||
return getRuleContexts(FuncRParamContext.class);
|
||||
}
|
||||
public FuncRParamContext funcRParam(int i) {
|
||||
return getRuleContext(FuncRParamContext.class,i);
|
||||
}
|
||||
public List<TerminalNode> Comma() { return getTokens(SysYParser.Comma); }
|
||||
public TerminalNode Comma(int i) {
|
||||
return getToken(SysYParser.Comma, i);
|
||||
}
|
||||
public FuncRParamsContext(ParserRuleContext parent, int invokingState) {
|
||||
super(parent, invokingState);
|
||||
}
|
||||
@Override public int getRuleIndex() { return RULE_funcRParams; }
|
||||
}
|
||||
|
||||
public final FuncRParamsContext funcRParams() throws RecognitionException {
|
||||
FuncRParamsContext _localctx = new FuncRParamsContext(_ctx, getState());
|
||||
enterRule(_localctx, 0, RULE_funcRParams);
|
||||
int _la;
|
||||
try {
|
||||
enterOuterAlt(_localctx, 1);
|
||||
{
|
||||
setState(6);
|
||||
funcRParam();
|
||||
setState(11);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
while (_la==Comma) {
|
||||
{
|
||||
{
|
||||
setState(7);
|
||||
match(Comma);
|
||||
setState(8);
|
||||
funcRParam();
|
||||
}
|
||||
}
|
||||
setState(13);
|
||||
_errHandler.sync(this);
|
||||
_la = _input.LA(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (RecognitionException re) {
|
||||
_localctx.exception = re;
|
||||
_errHandler.reportError(this, re);
|
||||
_errHandler.recover(this, re);
|
||||
}
|
||||
finally {
|
||||
exitRule();
|
||||
}
|
||||
return _localctx;
|
||||
}
|
||||
|
||||
public static class FuncRParamContext extends ParserRuleContext {
|
||||
public FuncRParamContext(ParserRuleContext parent, int invokingState) {
|
||||
super(parent, invokingState);
|
||||
}
|
||||
@Override public int getRuleIndex() { return RULE_funcRParam; }
|
||||
|
||||
public FuncRParamContext() { }
|
||||
public void copyFrom(FuncRParamContext ctx) {
|
||||
super.copyFrom(ctx);
|
||||
}
|
||||
}
|
||||
public static class StringAsRParamContext extends FuncRParamContext {
|
||||
public TerminalNode STRING() { return getToken(SysYParser.STRING, 0); }
|
||||
public StringAsRParamContext(FuncRParamContext ctx) { copyFrom(ctx); }
|
||||
}
|
||||
public static class ExpAsRParamContext extends FuncRParamContext {
|
||||
public NumberContext number() {
|
||||
return getRuleContext(NumberContext.class,0);
|
||||
}
|
||||
public ExpAsRParamContext(FuncRParamContext ctx) { copyFrom(ctx); }
|
||||
}
|
||||
|
||||
public final FuncRParamContext funcRParam() throws RecognitionException {
|
||||
FuncRParamContext _localctx = new FuncRParamContext(_ctx, getState());
|
||||
enterRule(_localctx, 2, RULE_funcRParam);
|
||||
try {
|
||||
setState(16);
|
||||
_errHandler.sync(this);
|
||||
switch (_input.LA(1)) {
|
||||
case IntLiteral:
|
||||
case FloatLiteral:
|
||||
_localctx = new ExpAsRParamContext(_localctx);
|
||||
enterOuterAlt(_localctx, 1);
|
||||
{
|
||||
setState(14);
|
||||
number();
|
||||
}
|
||||
break;
|
||||
case STRING:
|
||||
_localctx = new StringAsRParamContext(_localctx);
|
||||
enterOuterAlt(_localctx, 2);
|
||||
{
|
||||
setState(15);
|
||||
match(STRING);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new NoViableAltException(this);
|
||||
}
|
||||
}
|
||||
catch (RecognitionException re) {
|
||||
_localctx.exception = re;
|
||||
_errHandler.reportError(this, re);
|
||||
_errHandler.recover(this, re);
|
||||
}
|
||||
finally {
|
||||
exitRule();
|
||||
}
|
||||
return _localctx;
|
||||
}
|
||||
|
||||
public static class NumberContext extends ParserRuleContext {
|
||||
public TerminalNode IntLiteral() { return getToken(SysYParser.IntLiteral, 0); }
|
||||
public TerminalNode FloatLiteral() { return getToken(SysYParser.FloatLiteral, 0); }
|
||||
public NumberContext(ParserRuleContext parent, int invokingState) {
|
||||
super(parent, invokingState);
|
||||
}
|
||||
@Override public int getRuleIndex() { return RULE_number; }
|
||||
}
|
||||
|
||||
public final NumberContext number() throws RecognitionException {
|
||||
NumberContext _localctx = new NumberContext(_ctx, getState());
|
||||
enterRule(_localctx, 4, RULE_number);
|
||||
int _la;
|
||||
try {
|
||||
enterOuterAlt(_localctx, 1);
|
||||
{
|
||||
setState(18);
|
||||
_la = _input.LA(1);
|
||||
if ( !(_la==IntLiteral || _la==FloatLiteral) ) {
|
||||
_errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
|
||||
_errHandler.reportMatch(this);
|
||||
consume();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (RecognitionException re) {
|
||||
_localctx.exception = re;
|
||||
_errHandler.reportError(this, re);
|
||||
_errHandler.recover(this, re);
|
||||
}
|
||||
finally {
|
||||
exitRule();
|
||||
}
|
||||
return _localctx;
|
||||
}
|
||||
|
||||
public static final String _serializedATN =
|
||||
"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\t\27\4\2\t\2\4\3"+
|
||||
"\t\3\4\4\t\4\3\2\3\2\3\2\7\2\f\n\2\f\2\16\2\17\13\2\3\3\3\3\5\3\23\n\3"+
|
||||
"\3\4\3\4\3\4\2\2\5\2\4\6\2\3\3\2\4\5\2\25\2\b\3\2\2\2\4\22\3\2\2\2\6\24"+
|
||||
"\3\2\2\2\b\r\5\4\3\2\t\n\7\3\2\2\n\f\5\4\3\2\13\t\3\2\2\2\f\17\3\2\2\2"+
|
||||
"\r\13\3\2\2\2\r\16\3\2\2\2\16\3\3\2\2\2\17\r\3\2\2\2\20\23\5\6\4\2\21"+
|
||||
"\23\7\6\2\2\22\20\3\2\2\2\22\21\3\2\2\2\23\5\3\2\2\2\24\25\t\2\2\2\25"+
|
||||
"\7\3\2\2\2\4\r\22";
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,40 +1,29 @@
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
#include "SysYParser.h"
|
||||
#include "ASTPrinter.h"
|
||||
#include "SysYParser.h"
|
||||
|
||||
antlrcpp::Any ASTPrinter::visitNumber(SysYParser::NumberContext *ctx) {
|
||||
if (auto iCtx = ctx->IntLiteral()) {
|
||||
cout << iCtx->getText();
|
||||
} else if (auto fCtx = ctx->FloatLiteral()) {
|
||||
cout << fCtx->getText();
|
||||
}
|
||||
cout << ctx->IntConst()->getText();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
antlrcpp::Any ASTPrinter::visitStringAsRParam(SysYParser::StringAsRParamContext *ctx) {
|
||||
cout << ctx->getText();
|
||||
antlrcpp::Any ASTPrinter::visitString(SysYParser::StringContext *ctx) {
|
||||
cout << ctx->String()->getText();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// antlrcpp::Any ASTPrinter::visitFuncRParam(SysYParser::FuncRParamContext *ctx) {
|
||||
// if (auto exp = dynamic_cast<SysYParser::ExpAsRParamContext *>(ctx))
|
||||
// return visitExpAsRParam(exp);
|
||||
// else
|
||||
// return visitStringAsRParam(static_cast<SysYParser::StringAsRParamContext
|
||||
// *>(ctx));
|
||||
// }
|
||||
|
||||
antlrcpp::Any ASTPrinter::visitFuncRParams(SysYParser::FuncRParamsContext *ctx) {
|
||||
antlrcpp::Any
|
||||
ASTPrinter::visitFuncRParams(SysYParser::FuncRParamsContext *ctx) {
|
||||
if (ctx->funcRParam().empty())
|
||||
return nullptr;
|
||||
ctx->funcRParam(0)->accept(this);
|
||||
auto numParams = ctx->funcRParam().size();
|
||||
ctx->funcRParam(0)->accept(this);
|
||||
for (int i = 1; i < numParams; ++i) {
|
||||
cout << ", ";
|
||||
ctx->funcRParam(i)->accept(this);
|
||||
}
|
||||
cout << '\n';
|
||||
return nullptr;
|
||||
}
|
||||
Loading…
Reference in new issue