// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com). // All rights reserved. // Symbol.go package expr type Symbol int16 const ( SymUnknown Symbol = iota - 1 // -1: Unknown symbol SymNone // 0: Null value for variable of type symbol SymError // 1: Error reading from stream SymEos // 2: End of stream SymMinus // 3: '-' SymMinusEqual // 4: '-=' SymDoubleMinus // 5: '--' SymPlus // 6: '+' SymPlusEqual // 7: '+=' SymDoublePlus // 8: '++' SymStar // 9: '*' SymDoubleStar // 10: '**' SymSlash // 11: '/' SymBackSlash // 12: '\' SymVertBar // 13: '|' SymDoubleVertBar // 14: '||' SymComma // 15: ',' SymColon // 16: ':' SymSemiColon // 17: ';' SymDot // 18: '.' SymDotSlash // 19: './' SymQuote // 20: '\'' SymDoubleQuote // 21: '"' SymBackTick // 22: '`' SymExclamation // 23: '!' SymQuestion // 24: '?' SymAmpersand // 25: '&' SymDoubleAmpersand // 26: '&&' SymPercent // 27: '%' SymAt // 28: '@' SymUndescore // 29: '_' SymEqual // 30: '=' SymDoubleEqual // 31: '==' SymLess // 32: '<' SymLessOrEqual // 33: '<=' SymGreater // 34: '>' SymGreaterOrEqual // 35: '>=' SymLessGreater // 36: '<>' SymNotEqual // 37: '!=' SymDollar // 38: '$' SymHash // 39: '#' SymOpenRound // 40: '(' SymClosedRound // 41: ')' SymOpenSquare // 42: '[' SymClosedSquare // 43: ']' SymOpenBrace // 44: '{' SymClosedBrace // 45: '}' SymTilde // 46: '~' SymDoubleQuestion // 47: '??' SymQuestionEqual // 48: '?=' SymDoubleAt // 49: '@@' SymDoubleColon // 50: '::' SymInsert // 51: '>>' SymAppend // 52: '<<' SymCaret // 53: '^' SymDollarRound // 54: '$(' SymOpenClosedRound // 55: '()' SymDoubleDollar // 56: '$$' SymDoubleDot // 57: '..' SymTripleDot // 58: '...' SymChangeSign SymUnchangeSign SymIdentifier SymBool SymInteger SymVariable SymFloat SymFraction SymString SymIterator SymOr SymAnd SymNot SymComment SymFuncCall SymFuncDef SymList SymDict SymExpression SymSelector // ::= "?" {":" } ["::" ] SymSelectorCase // ::= [] "{" "}" // SymOpenComment // 0: '/*' // SymClosedComment // 0: '*/' // SymOneLineComment // 0: '//' keywordBase ) const ( SymKwAnd = keywordBase + iota SymKwNot SymKwOr SymKwBut SymKwFunc SymKwBuiltin SymKwIn SymKwInclude SymKwNil ) var keywords map[string]Symbol func init() { //keywords = make(map[string]Symbol) keywords = map[string]Symbol{ "AND": SymKwAnd, "BUILTIN": SymKwBuiltin, "BUT": SymKwBut, "FUNC": SymKwFunc, "IN": SymKwIn, "INCLUDE": SymKwInclude, "NOT": SymKwNot, "OR": SymKwOr, "NIL": SymKwNil, } }