This commit is contained in:
ChUrl
2020-12-13 14:48:20 +01:00
parent 2712318654
commit d949a7fa8b
3 changed files with 77 additions and 55 deletions

View File

@ -3,10 +3,12 @@
<option name="LINE_SEPARATOR" value="&#10;" /> <option name="LINE_SEPARATOR" value="&#10;" />
<option name="RIGHT_MARGIN" value="100" /> <option name="RIGHT_MARGIN" value="100" />
<option name="SOFT_MARGINS" value="100" /> <option name="SOFT_MARGINS" value="100" />
<DB2CodeStyleSettings version="2"> <DB2CodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -21,10 +23,12 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</DB2CodeStyleSettings> </DB2CodeStyleSettings>
<DerbyCodeStyleSettings version="2"> <DerbyCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -39,10 +43,12 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</DerbyCodeStyleSettings> </DerbyCodeStyleSettings>
<H2CodeStyleSettings version="2"> <H2CodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -57,10 +63,12 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</H2CodeStyleSettings> </H2CodeStyleSettings>
<HSQLCodeStyleSettings version="2"> <HSQLCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -88,28 +96,12 @@
<option name="JD_ADD_BLANK_AFTER_RETURN" value="true" /> <option name="JD_ADD_BLANK_AFTER_RETURN" value="true" />
<option name="JD_KEEP_INVALID_TAGS" value="false" /> <option name="JD_KEEP_INVALID_TAGS" value="false" />
</JavaCodeStyleSettings> </JavaCodeStyleSettings>
<JetCodeStyleSettings> <MSSQLCodeStyleSettings version="5">
<option name="PACKAGES_TO_USE_STAR_IMPORTS"> <option name="USE_GENERAL_STYLE" value="false" />
<value> <option name="KEYWORD_CASE" value="2" />
<package name="java.util" alias="false" withSubpackages="false" />
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
<package name="io.ktor" alias="false" withSubpackages="true" />
</value>
</option>
<option name="PACKAGES_IMPORT_LAYOUT">
<value>
<package name="" alias="false" withSubpackages="true" />
<package name="java" alias="false" withSubpackages="true" />
<package name="javax" alias="false" withSubpackages="true" />
<package name="kotlin" alias="false" withSubpackages="true" />
<package name="" alias="true" withSubpackages="true" />
</value>
</option>
</JetCodeStyleSettings>
<MSSQLCodeStyleSettings version="2">
<option name="KEYWORD_CASE" value="0" />
<option name="TYPE_CASE" value="0" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -124,10 +116,12 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</MSSQLCodeStyleSettings> </MSSQLCodeStyleSettings>
<MySQLCodeStyleSettings version="2"> <MySQLCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -142,10 +136,12 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</MySQLCodeStyleSettings> </MySQLCodeStyleSettings>
<OracleCodeStyleSettings version="2"> <OracleCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -160,10 +156,12 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</OracleCodeStyleSettings> </OracleCodeStyleSettings>
<PostgresCodeStyleSettings version="2"> <PostgresCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -182,10 +180,12 @@
<option name="SPACES_AROUND_KEY_VALUE_DELIMITER" value="true" /> <option name="SPACES_AROUND_KEY_VALUE_DELIMITER" value="true" />
<option name="KEEP_BLANK_LINES" value="true" /> <option name="KEEP_BLANK_LINES" value="true" />
</Properties> </Properties>
<SQLiteCodeStyleSettings version="2"> <SQLiteCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -200,10 +200,11 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</SQLiteCodeStyleSettings> </SQLiteCodeStyleSettings>
<SqlCodeStyleSettings version="2"> <SqlCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="TYPE_CASE" value="0" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />
@ -218,10 +219,12 @@
<option name="WHERE_EL_LINE" value="1" /> <option name="WHERE_EL_LINE" value="1" />
<option name="ORDER_EL_LINE" value="1" /> <option name="ORDER_EL_LINE" value="1" />
</SqlCodeStyleSettings> </SqlCodeStyleSettings>
<SybaseCodeStyleSettings version="2"> <SybaseCodeStyleSettings version="5">
<option name="KEYWORD_CASE" value="0" /> <option name="USE_GENERAL_STYLE" value="false" />
<option name="TYPE_CASE" value="0" /> <option name="KEYWORD_CASE" value="2" />
<option name="IDENTIFIER_CASE" value="1" /> <option name="IDENTIFIER_CASE" value="1" />
<option name="TYPE_CASE" value="2" />
<option name="CUSTOM_TYPE_CASE" value="2" />
<option name="QUOTED_IDENTIFIER_CASE" value="1" /> <option name="QUOTED_IDENTIFIER_CASE" value="1" />
<option name="QUERY_EL_COMMA" value="2" /> <option name="QUERY_EL_COMMA" value="2" />
<option name="INSERT_TABLE_EL_LINE" value="1" /> <option name="INSERT_TABLE_EL_LINE" value="1" />

View File

@ -43,7 +43,7 @@ class Demo {
} }
@Test @Test
void demoBalance() throws URISyntaxException, IOException { void demoLeftPrecedence() throws URISyntaxException, IOException {
Path path = Paths.get(this.getClass().getClassLoader().getResource("exampleGrammars/Grammar.grammar").toURI()); Path path = Paths.get(this.getClass().getClassLoader().getResource("exampleGrammars/Grammar.grammar").toURI());
Grammar grammar = Grammar.fromFile(path); Grammar grammar = Grammar.fromFile(path);
LL1Parser parser = LL1Parser.fromGrammar(grammar); LL1Parser parser = LL1Parser.fromGrammar(grammar);
@ -52,6 +52,26 @@ class Demo {
AST tree = parser.parse(lex.getAllTokens(), lex.getVocabulary()); AST tree = parser.parse(lex.getAllTokens(), lex.getVocabulary());
ASTCompacter.clean(tree, grammar); ASTCompacter.clean(tree, grammar);
ExpressionBalancer.balance(tree); ExpressionBalancer.flip(tree);
System.out.println("Before left-precedence:\n" + tree);
ExpressionBalancer.leftPrecedence(tree);
System.out.println("After left-precedence:\n" + tree);
}
@Test
void demoOperatorPrecedence() throws URISyntaxException, IOException {
Path path = Paths.get(this.getClass().getClassLoader().getResource("exampleGrammars/Grammar.grammar").toURI());
Grammar grammar = Grammar.fromFile(path);
LL1Parser parser = LL1Parser.fromGrammar(grammar);
Lexer lex = this.initLexer("General.stups");
AST tree = parser.parse(lex.getAllTokens(), lex.getVocabulary());
ASTCompacter.clean(tree, grammar);
ExpressionBalancer.flip(tree);
ExpressionBalancer.leftPrecedence(tree);
System.out.println("Before operator-precedence:\n" + tree);
ExpressionBalancer.operatorPrecedence(tree);
System.out.println("After operator-precedence:\n" + tree);
} }
} }

View File

@ -1,7 +1,6 @@
class MyClass { class MyClass {
public static void main(String[] args) { public static void main(String[] args) {
while (1 < 2) boolean b = true;
i = 1;
} }
} }