private CustomTree AssignmentStatement() { CustomTree node = AssignmentExpression(); ExpectedToken((uint)TokenTable.Code.Semicolon); // ';' return(node); }
public void AddChild(CustomTree node) { if (children == null) { children = new List <CustomTree>(); } children.Add(node); }
CustomTree LogicalExpression() { CustomTree node = new CustomTree("logic_expression"); node.AddChild(Expression()); // Expression node.AddChild(new CustomTree(ExpectLogicalOp().Lexeme)); node.AddChild(Expression()); return(node); }
private CustomTree OutputStatement() { CustomTree node = new CustomTree("output"); ExpectedToken((uint)TokenTable.Code.Print); // 'print' node.AddChild(Expression()); ExpectedToken((uint)TokenTable.Code.Semicolon); // ';' return(node); }
CustomTree _Program() { CustomTree node = new CustomTree("test"); while (tokenListNode != null) { node.AddChild(Statement()); } return(node); }
CustomTree AssignmentExpression() { CustomTree node = new CustomTree("assignment"); var token = ExpectedToken((uint)TokenTable.Code.Id); // identifier node.AddChild(new CustomTree("identifier", token.ForeignId)); ExpectedToken((uint)TokenTable.Code.Assign); // '=' node.AddChild(Expression(token.Lexeme)); return(node); }
private CustomTree ConditionStatement() { CustomTree node = new CustomTree("if"); ExpectedToken((uint)TokenTable.Code.If); // 'if' ExpectedToken((uint)TokenTable.Code.OpenBrackets); // '(' node.AddChild(LogicalExpression()); TransitToNextToken(); ExpectedToken((uint)TokenTable.Code.CloseBrackets); // ')' node.AddChild(Statement()); return(node); }
private CustomTree LoopStatement() { CustomTree node = new CustomTree("for"); ExpectedToken((uint)TokenTable.Code.For); // 'for' ExpectedToken((uint)TokenTable.Code.OpenBrackets); // '(' node.AddChild(AssignmentExpression()); ExpectedToken((uint)TokenTable.Code.Semicolon); // ';' node.AddChild(LogicalExpression()); ExpectedToken((uint)TokenTable.Code.Semicolon); // ';' ExpectedToken((uint)TokenTable.Code.CloseBrackets); // ')' node.AddChild(Statement()); return(node); }
CustomTree Expression(string idName = null, POLIZBuilder builder = null) { CustomTree node = new CustomTree("expression"); builder = new POLIZBuilder(); while (GetTokenCode() != (uint)TokenTable.Code.Semicolon && !TokenTable.LogicOpCodes.Contains(GetTokenCode())) { builder.Append(GetCurrent()); TransitToNextToken(); } var tokens = builder.End(); if (idName != null) { CustomTree st = new CustomTree(idName); st.AddChild(new CustomTree(idName)); foreach (var token in tokens) { st.AddChild(token.Code == (uint)TokenTable.Code.Id ? new CustomTree("identifier", token.ForeignId) : new CustomTree(token.Lexeme)); node.AddChild(token.Code == (uint)TokenTable.Code.Id ? new CustomTree("identifier", token.ForeignId) : new CustomTree(token.Lexeme)); } st.AddChild(new CustomTree("=")); Console.Write("POLIZ: "); foreach (var child in st.GetChildren()) { Console.Write(child.Name + " "); } Console.WriteLine(); } else { foreach (var token in tokens) { node.AddChild(token.Code == (uint)TokenTable.Code.Id ? new CustomTree("identifier", token.ForeignId) : new CustomTree(token.Lexeme)); } } return(node); }
private CustomTree DeclarationStatement() { CustomTree node = new CustomTree("declaration"); //"int" | "float" var token = ExpectedOneOfTokens("TypeSpecifier", (uint)TokenTable.Code.Int, 100); node.AddChild(new CustomTree(TokenTable.GetLexemeName(token.Code))); // identifier token = ExpectedToken((uint)TokenTable.Code.Id); node.AddChild(new CustomTree("identifier", token.ForeignId)); ExpectedToken((uint)TokenTable.Code.Semicolon); // ';' return(node); }
static void PrintSyntaxTree(TokenTable tokensTable, CustomTree node, int level = 0) { Console.Write($"{new string('\t', level)} {node.Name}"); if (node.Id != 0) { Console.Write(node.Name == "identifier" ? $"\"{tokensTable.IdentifiersTable[node.Id]}\"" : $"\"{tokensTable.LiteralsTable[node.Id]}\""); Console.Write($" ({node.Id})"); } Console.WriteLine(); if (node.GetChildren() == null) { return; } foreach (var child in node.GetChildren()) { PrintSyntaxTree(tokensTable, child, level + 1); } }