Skip to content

Commit

Permalink
Fixed oversized parser (#805)
Browse files Browse the repository at this point in the history
* Fixed oversized parser

* Cleaned

* Autoclrf

* Autoclrf false

* Made test lineending agnostic
  • Loading branch information
SimonCockx authored Aug 8, 2024
1 parent ba2bf09 commit f320ef7
Show file tree
Hide file tree
Showing 8 changed files with 47,628 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
module com.regnosys.rosetta.GenerateRosetta

import com.regnosys.rosetta.xcore.compressor.ParserCompressorFragment
import com.regnosys.rosetta.xcore.extractor.ParserCaseExtractorFragment

import org.eclipse.xtext.xtext.generator.XtextGenerator
import org.eclipse.xtext.xtext.generator.StandardLanguage
import org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
Expand Down Expand Up @@ -85,6 +88,16 @@ Workflow {
formatter = {
generateStub = true
}
fragment = ParserCompressorFragment {
// Enabled to produce shorter Java code and ease debugging at the expense of a little uglier (because more dense) code
joinLinesEagerly = true
grammarFile = "${parentDir}/rosetta-ide/src-gen/main/java/com/regnosys/rosetta/ide/contentassist/antlr/internal/InternalRosettaParser.java"
grammarFile = "${parentDir}/rosetta-lang/src-gen/main/java/com/regnosys/rosetta/parser/antlr/internal/InternalRosettaParser.java"
}
fragment = ParserCaseExtractorFragment {
grammarFile = "${parentDir}/rosetta-ide/src-gen/main/java/com/regnosys/rosetta/ide/contentassist/antlr/internal/InternalRosettaParser.java"
grammarFile = "${parentDir}/rosetta-lang/src-gen/main/java/com/regnosys/rosetta/parser/antlr/internal/InternalRosettaParser.java"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.regnosys.rosetta.xcore.extractor;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

import org.eclipse.xtext.xtext.generator.XtextGenerator;
import org.eclipse.xtext.xtext.generator.XtextGeneratorLanguage;
import org.junit.jupiter.api.Test;

import com.google.common.io.Files;

public class ParserCaseExtractorFragmentTest {
@Test
public void testParserCaseExtractorFragment() throws IOException {
File source = new File("src/test/resources/extractor-test/Parser.java");
File target = new File("target/extractor-test/Parser.java");
target.getParentFile().mkdirs();
Files.copy(source, target);

ParserCaseExtractorFragment fragment = new ParserCaseExtractorFragment();
fragment.addGrammarFile(target.toString());

XtextGeneratorLanguage lang = new XtextGeneratorLanguage();
lang.addReferencedResource("platform:/resource/com.regnosys.rosetta/model/Rosetta.xcore");
lang.addReferencedResource("platform:/resource/com.regnosys.rosetta/model/RosettaSimple.xcore");
lang.addReferencedResource("platform:/resource/com.regnosys.rosetta/model/RosettaExpression.xcore");
lang.setGrammarUri(new File("src/main/java", "com.regnosys.rosetta.Rosetta".replace(".", "/") + ".xtext").toURI().toString());
lang.addFragment(fragment);

XtextGenerator generator = new XtextGenerator();
generator.addLanguage(lang);
generator.initialize();

fragment.generate();

File expected = new File("src/test/resources/extractor-test/ExpectedOutputParser.java");

assertEquals(
Files.asCharSource(expected, StandardCharsets.UTF_8).read().replace("\r\n", "\n"),
Files.asCharSource(target, StandardCharsets.UTF_8).read().replace("\r\n", "\n")
);
}
}
Loading

0 comments on commit f320ef7

Please sign in to comment.