// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com). // All rights reserved. // symbol.go package scan 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: '=' SymColonEqual // 31: ':=' SymDoubleEqual // 32: '==' SymLess // 33: '<' SymLessOrEqual // 34: '<=' SymGreater // 35: '>' SymGreaterOrEqual // 36: '>=' SymLessGreater // 37: '<>' SymNotEqual // 38: '!=' SymDollar // 39: '$' SymHash // 40: '#' SymOpenRound // 41: '(' SymClosedRound // 42: ')' SymOpenSquare // 43: '[' SymClosedSquare // 44: ']' SymOpenBrace // 45: '{' SymClosedBrace // 46: '}' SymTilde // 47: '~' SymDoubleQuestion // 48: '??' SymQuestionEqual // 49: '?=' SymQuestionExclam // 50: '?!' SymDoubleAt // 51: '@@' SymDoubleColon // 52: '::' SymDoubleGreater // 53: '>>' SymDoubleLess // 54: '<<' SymCaret // 55: '^' SymDollarRound // 56: '$(' SymOpenClosedRound // 57: '()' SymDoubleDollar // 58: '$$' SymDoubleDot // 59: '..' SymTripleDot // 60: '...' SymStarEqual // 61: '*=' SymSlashEqual // 62: '/=' SymPercEqual // 63: '%=' SymDoubleLessEqual // 64: '<<=' SymDoubleGreaterEqual // 65: '>>=' SymAmpersandEqual // 66: '&=' SymVertBarEqual // 67: '|=' SymCaretEqual // 68: '^=' SymPlusGreater // 69: '+>' SymLessPlus // 70: '<+' SymChangeSign // 71: '-' SymUnchangeSign // 72: '+'' SymDereference // 73: '*' SymPreInc // 74: '++' SymPreDec // 75: '--' SymIdentifier // 76: identifier SymBool // 77: boolean SymInteger // 78: integer SymVariable // 79: variable SymFloat // 80: float SymFraction // 81: fraction SymString // 82: string SymIterator // 83: iterator SymOr // 84: 'or' SymAnd // 85: 'and' SymNot // 86: 'not' SymComment // 87: comment SymFuncCall // 88: function call SymFuncDef // 89: function definition SymList // 90: list SymDict // 91: dict SymIndex // 92: index SymRange // 93: range [index : index] SymExpression // 94: expression SymSelector // 95: selector ::= "?" {":" } ["::" ] SymSelectorCase // 96: ::= [] "{" "}" // SymOpenComment // 0: '/*' // SymClosedComment // 0: '*/' // SymOneLineComment // 0: '//' keywordBase ) const ( SymKwAnd = keywordBase + iota SymKwNot SymKwOr SymKwBut SymKwFunc SymKwBuiltin SymKwPlugin SymKwIn SymKwInclude SymKwMap SymKwFilter SymKwDigest SymKwCat SymKwGroupBy SymKwJoin SymKwNil SymKwUnset ) var keywords map[string]Symbol func init() { //keywords = make(map[string]Symbol) keywords = map[string]Symbol{ "AND": SymKwAnd, "BUILTIN": SymKwBuiltin, "PLUGIN": SymKwPlugin, "BUT": SymKwBut, "FUNC": SymKwFunc, "IN": SymKwIn, "INCLUDE": SymKwInclude, "MAP": SymKwMap, "CAT": SymKwCat, "FILTER": SymKwFilter, "NOT": SymKwNot, "OR": SymKwOr, "NIL": SymKwNil, "UNSET": SymKwUnset, "DIGEST": SymKwDigest, "JOIN": SymKwJoin, "GROUPBY": SymKwGroupBy, } }