فهرست منبع

Fix minor issues with the parser context and with the extraction of switch tokens.

Timur Sağlam 4 سال پیش
والد
کامیت
1008ea11fe

+ 5 - 5
jplag.frontend.csharp-6/src/main/java/de/jplag/csharp/CSharpListener.java

@@ -42,7 +42,7 @@ import de.jplag.csharp.grammar.CSharpParser.ReturnStatementContext;
 import de.jplag.csharp.grammar.CSharpParser.Struct_bodyContext;
 import de.jplag.csharp.grammar.CSharpParser.Struct_definitionContext;
 import de.jplag.csharp.grammar.CSharpParser.SwitchStatementContext;
-import de.jplag.csharp.grammar.CSharpParser.Switch_expressionContext;
+import de.jplag.csharp.grammar.CSharpParser.Switch_sectionContext;
 import de.jplag.csharp.grammar.CSharpParser.ThrowStatementContext;
 import de.jplag.csharp.grammar.CSharpParser.TryStatementContext;
 import de.jplag.csharp.grammar.CSharpParser.UncheckedExpressionContext;
@@ -133,15 +133,15 @@ public class CSharpListener extends CSharpParserBaseListener implements CSharpTo
     }
 
     @Override
-    public void enterSwitch_expression(Switch_expressionContext context) {
+    public void enterSwitch_section(Switch_sectionContext context) {
         transformToken(SWITCH_BEGIN, context.getStart());
-        super.enterSwitch_expression(context);
+        super.enterSwitch_section(context);
     }
 
     @Override
-    public void exitSwitch_expression(Switch_expressionContext context) {
+    public void exitSwitch_section(Switch_sectionContext context) {
         transformToken(SWITCH_END, context.getStop());
-        super.exitSwitch_expression(context);
+        super.exitSwitch_section(context);
     }
 
     @Override

+ 4 - 4
jplag.frontend.csharp-6/src/main/java/de/jplag/csharp/CSharpParserAdapter.java

@@ -62,13 +62,13 @@ public class CSharpParserAdapter extends AbstractParser {
             CommonTokenStream tokens = new CommonTokenStream(lexer);
             CSharpParser parser = new CSharpParser(tokens);
 
-            // Create a tree walker and rule context
-            ParserRuleContext ruleContext = parser.getRuleContext();
+            // Create a tree walker and the entry context defined by the parser grammar
+            ParserRuleContext entryContext = parser.compilation_unit();
             ParseTreeWalker treeWalker = new ParseTreeWalker();
 
             // Walk over the parse tree:
-            for (int i = 0; i < ruleContext.getChildCount(); i++) {
-                ParseTree parseTree = ruleContext.getChild(i);
+            for (int i = 0; i < entryContext.getChildCount(); i++) {
+                ParseTree parseTree = entryContext.getChild(i);
                 treeWalker.walk(new CSharpListener(this), parseTree);
             }
         } catch (IOException exception) {

+ 11 - 6
jplag.frontend.csharp-6/src/main/java/de/jplag/csharp/Language.java

@@ -11,6 +11,11 @@ import de.jplag.TokenList;
  * @author Timur Saglam
  */
 public class Language implements de.jplag.Language {
+    private static final String NAME = "C# 6 Parser";
+    private static final String SHORT_NAME = "C# 6";
+    private static final String[] FILE_ENDINGS = new String[] {".cs", ".CS"};
+    private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
+
     private final CSharpParserAdapter parser;
 
     public Language(ErrorConsumer program) {
@@ -19,27 +24,27 @@ public class Language implements de.jplag.Language {
 
     @Override
     public String[] suffixes() {
-        return new String[] {".cs", ".CS"};
+        return FILE_ENDINGS;
     }
 
     @Override
     public String getName() {
-        return "C# 6 Parser";
+        return NAME;
     }
 
     @Override
     public String getShortName() {
-        return "C# 6";
+        return SHORT_NAME;
     }
 
     @Override
     public int minimumTokenMatch() {
-        return 8;
+        return DEFAULT_MIN_TOKEN_MATCH;
     }
 
     @Override
     public TokenList parse(File dir, String[] files) {
-        return this.parser.parse(dir, Arrays.asList(files));
+        return parser.parse(dir, Arrays.asList(files));
     }
 
     @Override
@@ -54,7 +59,7 @@ public class Language implements de.jplag.Language {
 
     @Override
     public boolean isPreformatted() {
-        return false;
+        return true;
     }
 
     @Override