Added new special operators like &= and <<=.
Also made a litle change to scanner function moveOn(): now it moves on the last char passed and only if there are more than one chars.
This commit is contained in:
+70
-66
@@ -31,72 +31,76 @@ type symbolSpec struct {
|
||||
func init() {
|
||||
|
||||
symbolMap = map[Symbol]symbolSpec{
|
||||
SymUnknown: {"<unknown>", symClassOther}, // -1: Unknown symbol
|
||||
SymNone: {"<null>", symClassOther}, // 0: Null value for variable of type symbol
|
||||
SymError: {"<error>", symClassOther}, // 1: Error reading from stream
|
||||
SymEos: {"<eos>", symClassOther}, // 2: End of stream
|
||||
SymMinus: {"-", symClassOperator}, // 3: '-'
|
||||
SymMinusEqual: {"-=", symClassOperator}, // 4: '-='
|
||||
SymDoubleMinus: {"--", symClassOperator}, // 5: '--'
|
||||
SymPlus: {"+", symClassOperator}, // 6: '+'
|
||||
SymPlusEqual: {"+=", symClassOperator}, // 7: '+='
|
||||
SymDoublePlus: {"++", symClassOperator}, // 8: '++'
|
||||
SymStar: {"*", symClassOperator}, // 9: '*'
|
||||
SymDoubleStar: {"**", symClassOperator}, // 10: '**'
|
||||
SymSlash: {"/", symClassOperator}, // 11: '/'
|
||||
SymBackSlash: {"\\", symClassOperator}, // 12: '\'
|
||||
SymVertBar: {"|", symClassOperator}, // 13: '|'
|
||||
SymDoubleVertBar: {"||", symClassOperator}, // 14: '||'
|
||||
SymComma: {",", symClassOperator}, // 15: ','
|
||||
SymColon: {":", symClassOperator}, // 16: ':'
|
||||
SymSemiColon: {";", symClassOperator}, // 17: ';'
|
||||
SymDot: {".", symClassOperator}, // 18: '.'
|
||||
SymDotSlash: {"./", symClassOperator}, // 19: './'
|
||||
SymQuote: {"'", symClassDelimiter}, // 20: '\''
|
||||
SymDoubleQuote: {"\"", symClassDelimiter}, // 21: '"'
|
||||
SymBackTick: {"`", symClassOperator}, // 22: '`'
|
||||
SymExclamation: {"!", symClassPostOp}, // 23: '!'
|
||||
SymQuestion: {"?", symClassOperator}, // 24: '?'
|
||||
SymAmpersand: {"&", symClassOperator}, // 25: '&'
|
||||
SymDoubleAmpersand: {"&&", symClassOperator}, // 26: '&&'
|
||||
SymPercent: {"%", symClassOperator}, // 27: '%'
|
||||
SymAt: {"@", symClassOperator}, // 28: '@'
|
||||
SymUndescore: {"_", symClassOperator}, // 29: '_'
|
||||
SymEqual: {"=", symClassOperator}, // 30: '='
|
||||
SymDoubleEqual: {"==", symClassOperator}, // 31: '=='
|
||||
SymLess: {"<", symClassOperator}, // 32: '<'
|
||||
SymLessOrEqual: {"<=", symClassOperator}, // 33: '<='
|
||||
SymGreater: {">", symClassOperator}, // 34: '>'
|
||||
SymGreaterOrEqual: {">=", symClassOperator}, // 35: '>='
|
||||
SymLessGreater: {"<>", symClassOperator}, // 36: '<>'
|
||||
SymNotEqual: {"!=", symClassOperator}, // 37: '!='
|
||||
SymDollar: {"$", symClassOperator}, // 38: '$'
|
||||
SymHash: {"#", symClassOperator}, // 39: '#'
|
||||
SymOpenRound: {"(", symClassParenthesis}, // 40: '('
|
||||
SymClosedRound: {")", symClassParenthesis}, // 41: ')'
|
||||
SymOpenSquare: {"[", symClassParenthesis}, // 42: '['
|
||||
SymClosedSquare: {"]", symClassParenthesis}, // 43: ']'
|
||||
SymOpenBrace: {"{", symClassParenthesis}, // 44: '{'
|
||||
SymClosedBrace: {"}", symClassParenthesis}, // 45: '}'
|
||||
SymTilde: {"~", symClassOperator}, // 46: '~'
|
||||
SymDoubleQuestion: {"??", symClassOperator}, // 47: '??'
|
||||
SymQuestionEqual: {"?=", symClassOperator}, // 48: '?='
|
||||
SymQuestionExclam: {"?!", symClassOperator}, // 49: '?!'
|
||||
SymDoubleAt: {"@@", symClassOperator}, // 50: '@@'
|
||||
SymDoubleColon: {"::", symClassOperator}, // 51: '::'
|
||||
SymDoubleGreater: {">>", symClassOperator}, // 52: '>>'
|
||||
SymDoubleLess: {"<<", symClassOperator}, // 53: '<<'
|
||||
SymCaret: {"^", symClassOperator}, // 54: '^'
|
||||
SymDollarRound: {"$(", symClassOperator}, // 55: '$('
|
||||
SymOpenClosedRound: {"()", symClassPostOp}, // 56: '()'
|
||||
SymDoubleDollar: {"$$", symClassOperator}, // 57: '$$'
|
||||
SymDoubleDot: {"..", symClassOperator}, // 58: '..'
|
||||
SymTripleDot: {"...", symClassOperator}, // 59: '...'
|
||||
SymStarEqual: {"*=", symClassOperator}, // 60: '*='
|
||||
SymSlashEqual: {"/=", symClassOperator}, // 61: '/='
|
||||
SymPercEqual: {"%=", symClassOperator}, // 62: '%='
|
||||
SymPlusGreater: {"+>", symClassOperator}, // 63: '+>'
|
||||
SymLessPlus: {"<+", symClassOperator}, // 64: '<+'
|
||||
SymUnknown: {"<unknown>", symClassOther}, // -1: Unknown symbol
|
||||
SymNone: {"<null>", symClassOther}, // 0: Null value for variable of type symbol
|
||||
SymError: {"<error>", symClassOther}, // 1: Error reading from stream
|
||||
SymEos: {"<eos>", symClassOther}, // 2: End of stream
|
||||
SymMinus: {"-", symClassOperator}, // 3: '-'
|
||||
SymMinusEqual: {"-=", symClassOperator}, // 4: '-='
|
||||
SymDoubleMinus: {"--", symClassOperator}, // 5: '--'
|
||||
SymPlus: {"+", symClassOperator}, // 6: '+'
|
||||
SymPlusEqual: {"+=", symClassOperator}, // 7: '+='
|
||||
SymDoublePlus: {"++", symClassOperator}, // 8: '++'
|
||||
SymStar: {"*", symClassOperator}, // 9: '*'
|
||||
SymDoubleStar: {"**", symClassOperator}, // 10: '**'
|
||||
SymSlash: {"/", symClassOperator}, // 11: '/'
|
||||
SymBackSlash: {"\\", symClassOperator}, // 12: '\'
|
||||
SymVertBar: {"|", symClassOperator}, // 13: '|'
|
||||
SymDoubleVertBar: {"||", symClassOperator}, // 14: '||'
|
||||
SymComma: {",", symClassOperator}, // 15: ','
|
||||
SymColon: {":", symClassOperator}, // 16: ':'
|
||||
SymSemiColon: {";", symClassOperator}, // 17: ';'
|
||||
SymDot: {".", symClassOperator}, // 18: '.'
|
||||
SymDotSlash: {"./", symClassOperator}, // 19: './'
|
||||
SymQuote: {"'", symClassDelimiter}, // 20: '\''
|
||||
SymDoubleQuote: {"\"", symClassDelimiter}, // 21: '"'
|
||||
SymBackTick: {"`", symClassOperator}, // 22: '`'
|
||||
SymExclamation: {"!", symClassPostOp}, // 23: '!'
|
||||
SymQuestion: {"?", symClassOperator}, // 24: '?'
|
||||
SymAmpersand: {"&", symClassOperator}, // 25: '&'
|
||||
SymDoubleAmpersand: {"&&", symClassOperator}, // 26: '&&'
|
||||
SymPercent: {"%", symClassOperator}, // 27: '%'
|
||||
SymAt: {"@", symClassOperator}, // 28: '@'
|
||||
SymUndescore: {"_", symClassOperator}, // 29: '_'
|
||||
SymEqual: {"=", symClassOperator}, // 30: '='
|
||||
SymDoubleEqual: {"==", symClassOperator}, // 31: '=='
|
||||
SymLess: {"<", symClassOperator}, // 32: '<'
|
||||
SymLessOrEqual: {"<=", symClassOperator}, // 33: '<='
|
||||
SymGreater: {">", symClassOperator}, // 34: '>'
|
||||
SymGreaterOrEqual: {">=", symClassOperator}, // 35: '>='
|
||||
SymLessGreater: {"<>", symClassOperator}, // 36: '<>'
|
||||
SymNotEqual: {"!=", symClassOperator}, // 37: '!='
|
||||
SymDollar: {"$", symClassOperator}, // 38: '$'
|
||||
SymHash: {"#", symClassOperator}, // 39: '#'
|
||||
SymOpenRound: {"(", symClassParenthesis}, // 40: '('
|
||||
SymClosedRound: {")", symClassParenthesis}, // 41: ')'
|
||||
SymOpenSquare: {"[", symClassParenthesis}, // 42: '['
|
||||
SymClosedSquare: {"]", symClassParenthesis}, // 43: ']'
|
||||
SymOpenBrace: {"{", symClassParenthesis}, // 44: '{'
|
||||
SymClosedBrace: {"}", symClassParenthesis}, // 45: '}'
|
||||
SymTilde: {"~", symClassOperator}, // 46: '~'
|
||||
SymDoubleQuestion: {"??", symClassOperator}, // 47: '??'
|
||||
SymQuestionEqual: {"?=", symClassOperator}, // 48: '?='
|
||||
SymQuestionExclam: {"?!", symClassOperator}, // 49: '?!'
|
||||
SymDoubleAt: {"@@", symClassOperator}, // 50: '@@'
|
||||
SymDoubleColon: {"::", symClassOperator}, // 51: '::'
|
||||
SymDoubleGreater: {">>", symClassOperator}, // 52: '>>'
|
||||
SymDoubleLess: {"<<", symClassOperator}, // 53: '<<'
|
||||
SymCaret: {"^", symClassOperator}, // 54: '^'
|
||||
SymDollarRound: {"$(", symClassOperator}, // 55: '$('
|
||||
SymOpenClosedRound: {"()", symClassPostOp}, // 56: '()'
|
||||
SymDoubleDollar: {"$$", symClassOperator}, // 57: '$$'
|
||||
SymDoubleDot: {"..", symClassOperator}, // 58: '..'
|
||||
SymTripleDot: {"...", symClassOperator}, // 59: '...'
|
||||
SymStarEqual: {"*=", symClassOperator}, // 60: '*='
|
||||
SymSlashEqual: {"/=", symClassOperator}, // 61: '/='
|
||||
SymPercEqual: {"%=", symClassOperator}, // 62: '%='
|
||||
SymDoubleLessEqual: {"<<=", symClassOperator}, // 63: '<<='
|
||||
SymDoubleGreaterEqual: {">>=", symClassOperator}, // 64: '>>='
|
||||
SymAmpersandEqual: {"&=", symClassOperator}, // 65: '&='
|
||||
SymVertBarEqual: {"|=", symClassOperator}, // 65: '|='
|
||||
SymPlusGreater: {"+>", symClassOperator}, // 66: '+>'
|
||||
SymLessPlus: {"<+", symClassOperator}, // 67: '<+'
|
||||
// SymChangeSign
|
||||
// SymUnchangeSign
|
||||
// SymIdentifier
|
||||
|
||||
Reference in New Issue
Block a user