public QLController() { LexerErrors = new List <string>(); ParserErrors = new List <string>(); Memory = new QLMemory(); TypeChecker = new QLTypeChecker(); }
public QLController() { LexerErrors = new List<string>(); ParserErrors = new List<string>(); Memory = new QLMemory(); TypeChecker = new QLTypeChecker(); }
public void DeclareSelf() { if (!Referenced) { if (Identifiers.IsDefined(Identifier)) { QLException error = new QLException(); error.Message = string.Format("Identifier '{0}' already defined!", Identifier); error.TokenInfo = TokenInfo; QLTypeChecker.QLError(error); AlreadyDefined = true; } else { Identifiers.AddIdentifier(Identifier, this); } } }
public static MessageContainer ValidateForm(QuestionForm astForm) { var messages = new MessageContainer(); messages.Add(QLDuplicateChecker.CheckDuplicates(astForm)); if (AnyErrors(messages)) { return(messages); } messages.Add(QLScopeChecker.CheckReferenceScopes(astForm)); if (AnyErrors(messages)) { return(messages); } messages.Add(QLCyclicDependencyChecker.CheckForCycles(astForm)); if (AnyErrors(messages)) { return(messages); } messages.Add(QLTypeChecker.CheckTypes(astForm)); return(messages); }
private void btnParse_Click(object sender, EventArgs e) { txtMessages.Clear(); pnlErrors.Controls.Clear(); _qlController = new QLController(); _errorYPos = 0; //build AST + check types _qlController.BuildAST(txtInput.Text); foreach (string lexerError in _qlController.LexerErrors) { WriteMessage(lexerError); } if (_qlController.LexerErrors.Any()) { WriteErrorLabel("Lexer errors occurred, see messages"); } foreach (string parserError in _qlController.ParserErrors) { WriteMessage(parserError); } if (_qlController.ParserErrors.Any()) { WriteErrorLabel("Parser errors occurred, see messages"); } //get type errors QLTypeChecker typeChecker = _qlController.TypeChecker; foreach (QLTypeError typeError in typeChecker.TypeErrors.OrderBy((te) => te.IsWarning)) { string error = string.Format("{5} QLTypeChecker: {0} {1}" + "<At token '{2}' on line {3}, column {4}>", typeError.Message, Environment.NewLine, typeError.TokenInfo.TokenText, typeError.TokenInfo.TokenLine, typeError.TokenInfo.TokenColumn, typeError.IsWarning ? "(Warning)" : "(Error)"); WriteErrorLabel(error, typeError.IsWarning); } WriteMessage(string.Format(@"Generated parse tree: {0} {1}" , Environment.NewLine , _qlController.GetParseTreeString())); //check if generate is possible if (_qlController.LexerErrors.Any() || _qlController.ParserErrors.Any() || typeChecker.TypeErrors.Any((te) => !te.IsWarning)) { lblSuccess.Visible = btnGenerate.Enabled = false; } else { lblSuccess.Visible = btnGenerate.Enabled = true; } }