private void AnalyzeVariables() { var variables = new List <Token>(); do { if (_currentToken.Symbol == LPD.Symbol.IDENTIFIER) { variables.Add(_currentToken); _currentToken = _lexical.GetNextToken(); if (_currentToken.Symbol == LPD.Symbol.COMMA || _currentToken.Symbol == LPD.Symbol.COLON) { if (_currentToken.Symbol == LPD.Symbol.COMMA) { _currentToken = _lexical.GetNextToken(); if (_currentToken.Symbol == LPD.Symbol.COLON) { throw new UnexpectedTokenException(UnexpectedTokenMessage("identifier")); } } // Else is colon } else { throw new UnexpectedTokenException(UnexpectedTokenMessage()); } } else { throw new UnexpectedTokenException(UnexpectedTokenMessage()); } } while (_currentToken.Symbol != LPD.Symbol.COLON); _currentToken = _lexical.GetNextToken(); LPD.ValueType valueType = AnalyzeValueType(); foreach (var var in variables) { _symbolsTable.Add(new TypedSymbol(var.Lexeme, _scope, LPD.IdentifierType.VARIABLE, valueType)); } }
public TypedSymbol(string label, uint scope, LPD.IdentifierType type, LPD.ValueType returnType) : base(label, scope, type) { ReturnType = returnType; }