public static List <Token> addFactor(VaribleStatment varibleStatment) { List <Token> tokens = new List <Token>(); foreach (object element in varibleStatment.getTokensList()) { tokens.Add((Token)element); } SemanticAnalizer.checkVarible(tokens[0].value); if (tokens.Count == 4) { if (tokens[2].kind == Constants.IDENTIFIER) { SemanticAnalizer.checkVarible(tokens[2].value); } else { SemanticAnalizer.checkGetElementByIndex(Program.varibleName, Int32.Parse(tokens[2].value)); } } return(tokens); }
public void process(WhileStatment whileStatment) { BoolStatment boolSatment = (BoolStatment)whileStatment.getTokensList()[0]; _leftExpression = IfStatmentProcessor.getLeftExpression((BoolExpression)boolSatment.getTokensList()[0]); if (_leftExpression[0].kind == Constants.IDENTIFIER) { SemanticAnalizer.checkVarible(_leftExpression[0].value); } if (_leftExpression[2].kind == Constants.IDENTIFIER) { SemanticAnalizer.checkVarible(_leftExpression[2].value); } _rightExpression = IfStatmentProcessor.getElseAndThenStatments((StatmentPart)whileStatment.getTokensList()[1]); generate(); }
public void process(WriteStatment writeStatment) { try { VaribleStatment varibleStatment = (VaribleStatment)writeStatment.getTokensList()[0]; _isArray = false; _identifier = (Token)varibleStatment.getTokensList()[0]; SemanticAnalizer.checkVarible(_identifier.value); } catch//для массива { List <Token> tokens = AssignmentProcessor.getMathExpression((MathStatment)writeStatment.getTokensList()[0]); _identifier = tokens[0]; if (tokens.Count == 1) { if (tokens[0].kind == Constants.CONST_INT) { SemanticAnalizer.readAndWriteToConts(); } else { SemanticAnalizer.checkVarible(tokens[0].value); } _isArray = false; } else if (tokens.Count == 4 && (tokens[1].kind == Constants.BRACKET_L) && (tokens[3].kind == Constants.BRACKET_R)) { _isArray = true; if (tokens[2].kind == Constants.IDENTIFIER) { SemanticAnalizer.checkVarible(tokens[2].value); } _elementIndex = tokens[2]; } else { SemanticAnalizer.InvalidIdentifier(); } } generate(); }
List <Token> getArrayInitializtionList(ArrayAssignment arrayAssignmnent) { List <Token> tokens = new List <Token>(); foreach (Token token in arrayAssignmnent.getTokensList()) { tokens.Add(token); } SemanticAnalizer.checkVarible(_leftOp.value); SemanticAnalizer.checkInitEmptyArray(_leftOp.value, tokens.Count); SemanticAnalizer.checkIsLengthArrayEqual(_leftOp.value, tokens.Count); if (_isArrayElementLeft) { SemanticAnalizer.incompatibleTypes(); } else { SemanticAnalizer.checkCompareTypes(_leftOp.value, Constants.INTARRAY); } return(tokens); }
public void process(IfStatment ifStatment) { isElseAppear = false; BoolStatment boolStatment = (BoolStatment)ifStatment.getTokensList()[0]; _leftExpression = getLeftExpression((BoolExpression)boolStatment.getTokensList()[0]); if (_leftExpression[0].kind == Constants.IDENTIFIER) { SemanticAnalizer.checkVarible(_leftExpression[0].value); } if (_leftExpression[2].kind == Constants.IDENTIFIER) { SemanticAnalizer.checkVarible(_leftExpression[2].value); } _thenExpression = getElseAndThenStatments((StatmentPart)ifStatment.getTokensList()[1]); if (ifStatment.getTokensList().Count == 3) { isElseAppear = true; _elseExpression = getElseAndThenStatments((StatmentPart)ifStatment.getTokensList()[2]); } generate(); }