Sentence global_sentenceP(Sentence sentencia1) { switch(currentToken.Tipo) { case TokenType.STRING: case TokenType.BOOL: case TokenType.CHAR: case TokenType.FLOAT: case TokenType.INT: case TokenType.VOID: case TokenType.CONST: case TokenType.STRUCT: case TokenType.ENUM: case TokenType.CIN: case TokenType.COUT: Sentence sentencia2 = sentence(); SentenceSenquence sentSequence = new SentenceSenquence(sentencia1, sentencia2); return global_sentenceP(sentSequence); default: return sentencia1;//null } }
Sentence variable_declaration_listP(Sentence primerDeclaracionVariable, EnvTypes savedEnvTypes, EnvValues savedEnvValues) { switch (currentToken.Tipo) { case TokenType.STRING: case TokenType.BOOL: case TokenType.CHAR: case TokenType.FLOAT: case TokenType.INT: Tipo tipoVariables = variable_type(); string idVariable = direct_variable_declarator(); Tipo tipoVariable = variable_array(tipoVariables); match(";"); VariableSubDeclarator segundaVariable = new VariableSubDeclarator(tipoVariable, idVariable); VariableDeclarator segundaDeclaracionVariable = new VariableDeclarator(segundaVariable, null); SentenceSenquence stSeq = new SentenceSenquence(primerDeclaracionVariable, segundaDeclaracionVariable); entornoTipos.put(idVariable, tipoVariable); return variable_declaration_listP(stSeq, savedEnvTypes, savedEnvValues); case TokenType.STRUCT: string structName = struct_declarator(); Tipo varRecord = savedEnvTypes.get(structName); Valor valRecord = savedEnvValues.get(structName); string structVarName = variable_name(); match(";"); StructVariableDeclaration strVarDec = new StructVariableDeclaration(structName, structVarName, varRecord, valRecord); SentenceSenquence stSeq2 = new SentenceSenquence(primerDeclaracionVariable, strVarDec); entornoTipos.put(structVarName, varRecord); return variable_declaration_listP(stSeq2, savedEnvTypes, savedEnvValues); case TokenType.ENUM: string enumName = enum_declarator(); Tipo varEnum = savedEnvTypes.get(enumName); Valor valEnum = savedEnvValues.get(enumName); string enumVarName = currentToken.Lexema; match(TokenType.ID); entornoTipos.put(enumName, varEnum); EnumerationVariableDeclaration enumVarDec = new EnumerationVariableDeclaration(enumName, enumVarName, varEnum, valEnum); SentenceSenquence stSeq3 = new SentenceSenquence(primerDeclaracionVariable, enumVarDec); return variable_declaration_listP(stSeq3, savedEnvTypes, savedEnvValues); default: return primerDeclaracionVariable;//null } }