Pretty printing
This commit is contained in:
parent
69782dd2fa
commit
9eb90686bb
2 changed files with 30 additions and 16 deletions
22
Compiler/.idea/.idea.Compiler/.idea/workspace.xml
generated
22
Compiler/.idea/.idea.Compiler/.idea/workspace.xml
generated
|
|
@ -21,7 +21,7 @@
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="a54bb6de-191c-4bd1-91ab-3953adfc5dfb" name="Default Changelist" comment="">
|
<list default="true" id="a54bb6de-191c-4bd1-91ab-3953adfc5dfb" name="Default Changelist" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.Compiler/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.Compiler/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/.idea.Compiler/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.Compiler/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Lexer/TokenType.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Lexer/TokenType.cs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Compiler.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Compiler.cs" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
|
@ -85,8 +85,8 @@
|
||||||
<option value="$PROJECT_DIR$/Parser/Exceptions/MissingTokenException.cs" />
|
<option value="$PROJECT_DIR$/Parser/Exceptions/MissingTokenException.cs" />
|
||||||
<option value="$PROJECT_DIR$/Parser/Exceptions/UnexpectedTokenException.cs" />
|
<option value="$PROJECT_DIR$/Parser/Exceptions/UnexpectedTokenException.cs" />
|
||||||
<option value="$PROJECT_DIR$/Parser/Parser.cs" />
|
<option value="$PROJECT_DIR$/Parser/Parser.cs" />
|
||||||
<option value="$PROJECT_DIR$/Compiler.cs" />
|
|
||||||
<option value="$PROJECT_DIR$/Lexer/TokenType.cs" />
|
<option value="$PROJECT_DIR$/Lexer/TokenType.cs" />
|
||||||
|
<option value="$PROJECT_DIR$/Compiler.cs" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
|
@ -147,7 +147,7 @@
|
||||||
<workItem from="1597604480117" duration="13146000" />
|
<workItem from="1597604480117" duration="13146000" />
|
||||||
<workItem from="1597620399423" duration="389000" />
|
<workItem from="1597620399423" duration="389000" />
|
||||||
<workItem from="1597650936637" duration="537000" />
|
<workItem from="1597650936637" duration="537000" />
|
||||||
<workItem from="1597695400525" duration="4359000" />
|
<workItem from="1597695400525" duration="4637000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|
@ -181,22 +181,22 @@
|
||||||
<screen x="1920" y="0" width="1920" height="1080" />
|
<screen x="1920" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state x="2169" y="170" width="430" height="508" key="FileChooserDialogImpl/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597507670532" />
|
<state x="2169" y="170" width="430" height="508" key="FileChooserDialogImpl/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597507670532" />
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.bottom" timestamp="1597699568550">
|
<state width="1868" height="289" key="GridCell.Tab.0.bottom" timestamp="1597700036417">
|
||||||
<screen x="1920" y="0" width="1920" height="1080" />
|
<screen x="1920" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.bottom/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597699568550" />
|
<state width="1868" height="289" key="GridCell.Tab.0.bottom/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597700036417" />
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.center" timestamp="1597699568550">
|
<state width="1868" height="289" key="GridCell.Tab.0.center" timestamp="1597700036417">
|
||||||
<screen x="1920" y="0" width="1920" height="1080" />
|
<screen x="1920" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.center/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597699568550" />
|
<state width="1868" height="289" key="GridCell.Tab.0.center/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597700036417" />
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.left" timestamp="1597699568550">
|
<state width="1868" height="289" key="GridCell.Tab.0.left" timestamp="1597700036417">
|
||||||
<screen x="1920" y="0" width="1920" height="1080" />
|
<screen x="1920" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.left/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597699568550" />
|
<state width="1868" height="289" key="GridCell.Tab.0.left/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597700036417" />
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.right" timestamp="1597699568550">
|
<state width="1868" height="289" key="GridCell.Tab.0.right" timestamp="1597700036417">
|
||||||
<screen x="1920" y="0" width="1920" height="1080" />
|
<screen x="1920" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
<state width="1868" height="289" key="GridCell.Tab.0.right/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597699568550" />
|
<state width="1868" height="289" key="GridCell.Tab.0.right/1920.0.1920.1080/0.0.1920.1080@1920.0.1920.1080" timestamp="1597700036417" />
|
||||||
<state width="1868" height="383" key="GridCell.Tab.1.bottom" timestamp="1597698294797">
|
<state width="1868" height="383" key="GridCell.Tab.1.bottom" timestamp="1597698294797">
|
||||||
<screen x="1920" y="0" width="1920" height="1080" />
|
<screen x="1920" y="0" width="1920" height="1080" />
|
||||||
</state>
|
</state>
|
||||||
|
|
|
||||||
|
|
@ -18,17 +18,26 @@ namespace Compiler
|
||||||
foreach (string filepath in validFiles)
|
foreach (string filepath in validFiles)
|
||||||
{
|
{
|
||||||
List<Token> tokens = TestLexer(filepath, 0);
|
List<Token> tokens = TestLexer(filepath, 0);
|
||||||
TestParser(tokens, filepath);
|
TestParser(tokens, filepath, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (string filepath in invalidFiles)
|
foreach (string filepath in invalidFiles)
|
||||||
{
|
{
|
||||||
List<Token> tokens = TestLexer(filepath, 0);
|
List<Token> tokens = TestLexer(filepath, 0);
|
||||||
TestParser(tokens, filepath);
|
TestParser(tokens, filepath, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static List<Token> TestLexer(string path, int debug)
|
static void PrettyPrint(Node root, string indent)
|
||||||
|
{
|
||||||
|
Console.WriteLine(indent + root.NodeType);
|
||||||
|
foreach (Node child in root.Children)
|
||||||
|
{
|
||||||
|
PrettyPrint(child, indent + " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static List<Token> TestLexer(string path, int debugLevel)
|
||||||
{
|
{
|
||||||
//List<List<Token>> tokenLists = new List<List<Token>>();
|
//List<List<Token>> tokenLists = new List<List<Token>>();
|
||||||
//string[] files = Directory.GetFiles(path);
|
//string[] files = Directory.GetFiles(path);
|
||||||
|
|
@ -41,7 +50,7 @@ namespace Compiler
|
||||||
List<Token> tokens = lexer.Lex(contents);
|
List<Token> tokens = lexer.Lex(contents);
|
||||||
Console.WriteLine("Lexed \"" + path.Split("/").Last() + "\"");
|
Console.WriteLine("Lexed \"" + path.Split("/").Last() + "\"");
|
||||||
|
|
||||||
if (debug > 0)
|
if (debugLevel > 0)
|
||||||
{
|
{
|
||||||
Console.WriteLine("-----------" + path + "-----------");
|
Console.WriteLine("-----------" + path + "-----------");
|
||||||
foreach (Token token in tokens)
|
foreach (Token token in tokens)
|
||||||
|
|
@ -56,13 +65,18 @@ namespace Compiler
|
||||||
return tokens;
|
return tokens;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TestParser(List<Token> tokenList, string path)
|
static void TestParser(List<Token> tokenList, string path, int debugLevel)
|
||||||
{
|
{
|
||||||
Parser.Parser p = new Parser.Parser(tokenList);
|
Parser.Parser p = new Parser.Parser(tokenList);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Node programNode = p.Parse(NodeType.ProgramNode);
|
Node programNode = p.Parse(NodeType.ProgramNode);
|
||||||
|
if (debugLevel > 0)
|
||||||
|
{
|
||||||
|
PrettyPrint(programNode, "");
|
||||||
|
}
|
||||||
|
|
||||||
Console.WriteLine("Parsed \"" + path.Split("/").Last() + "\"");
|
Console.WriteLine("Parsed \"" + path.Split("/").Last() + "\"");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue