aboutsummaryrefslogtreecommitdiffstats
path: root/language-web
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-10-11 01:13:32 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-10-31 19:26:10 +0100
commit1d7f4031d614ae16b53de5a84312a71346da0c9c (patch)
tree961eedc36eca26af61baa862e5cf4b9d1b04de79 /language-web
parentfeat(web): experiment with Lezer parser (diff)
downloadrefinery-1d7f4031d614ae16b53de5a84312a71346da0c9c.tar.gz
refinery-1d7f4031d614ae16b53de5a84312a71346da0c9c.tar.zst
refinery-1d7f4031d614ae16b53de5a84312a71346da0c9c.zip
chore(web): remove CodeMirror 5 MWE2 integration
CodeMirror 6 uses a hand-writter Lezer parser instead of the stream parser generated by Xtext for CodeMirror 5.
Diffstat (limited to 'language-web')
-rw-r--r--language-web/build.gradle6
-rw-r--r--language-web/src/main/js/editor/problem.grammar23
-rw-r--r--language-web/webpack.config.js2
3 files changed, 16 insertions, 15 deletions
diff --git a/language-web/build.gradle b/language-web/build.gradle
index 1f1457d6..f2b9b43f 100644
--- a/language-web/build.gradle
+++ b/language-web/build.gradle
@@ -51,12 +51,12 @@ def generateLezerGrammar = tasks.register('generateLezerGrammar', RunNpmYarn) {
51 51
52def assembleFrontend = tasks.named('assembleFrontend') 52def assembleFrontend = tasks.named('assembleFrontend')
53assembleFrontend.configure { 53assembleFrontend.configure {
54 dependsOn generateXtextLanguage
55 dependsOn generateLezerGrammar 54 dependsOn generateLezerGrammar
56 inputs.dir 'src/main/css' 55 inputs.dir 'src/main/css'
57 inputs.dir 'src/main/html' 56 inputs.dir 'src/main/html'
58 inputs.dir 'src/main/js' 57 inputs.dir 'src/main/js'
59 inputs.dir "${buildDir}/generated/sources/xtext/js" 58 inputs.file "${buildDir}/generated/sources/lezer/problem.ts"
59 inputs.file "${buildDir}/generated/sources/lezer/problem.terms.ts"
60 inputs.files('package.json', 'yarn.lock', 'webpack.config.js') 60 inputs.files('package.json', 'yarn.lock', 'webpack.config.js')
61 outputs.dir productionResources 61 outputs.dir productionResources
62} 62}
@@ -135,7 +135,7 @@ def jettyRun = tasks.register('jettyRun', JavaExec) {
135 135
136tasks.register('webpackServe', RunNpmYarn) { 136tasks.register('webpackServe', RunNpmYarn) {
137 dependsOn installFrontend 137 dependsOn installFrontend
138 dependsOn generateXtextLanguage 138 dependsOn generateLezerGrammar
139 outputs.dir "${webpackOutputDir}/development" 139 outputs.dir "${webpackOutputDir}/development"
140 script = 'run serve' 140 script = 'run serve'
141 group = 'run' 141 group = 'run'
diff --git a/language-web/src/main/js/editor/problem.grammar b/language-web/src/main/js/editor/problem.grammar
index c64402b0..921cec53 100644
--- a/language-web/src/main/js/editor/problem.grammar
+++ b/language-web/src/main/js/editor/problem.grammar
@@ -3,41 +3,42 @@
3 3
4statement { 4statement {
5 ProblemDeclaration { 5 ProblemDeclaration {
6 kw<"problem"> QualifiedName "." 6 ckw<"problem"> QualifiedName "."
7 } | 7 } |
8 ClassDefinition { 8 ClassDefinition {
9 kw<"abstract">? kw<"class"> RelationName 9 ckw<"abstract">? ckw<"class"> RelationName
10 (ClassBody { "{" ReferenceDeclaration* "}" } | ".") 10 (ClassBody { "{" ReferenceDeclaration* "}" } | ".")
11 } | 11 } |
12 EnumDefinition { 12 EnumDefinition {
13 kw<"enum"> RelationName 13 ckw<"enum"> RelationName
14 (EnumBody { "{" sep<",", UniqueNodeName> "}" } | ".") 14 (EnumBody { "{" sep<",", UniqueNodeName> "}" } | ".")
15 } | 15 } |
16 PredicateDefinition { 16 PredicateDefinition {
17 (kw<"error"> kw<"pred">? | kw<"pred">) RelationName ParameterList<Parameter>? 17 (ckw<"error"> ckw<"pred">? | ckw<"pred">) RelationName ParameterList<Parameter>?
18 PredicateBody { ("<->" sep<OrOp, Conjunction>)? "." } 18 PredicateBody { ("<->" sep<OrOp, Conjunction>)? "." }
19 } | 19 } |
20 Assertion { 20 Assertion {
21 kw<"default">? (NotOp | UnknownOp)? RelationName 21 ckw<"default">? (NotOp | UnknownOp)? RelationName
22 ParameterList<AssertionArgument> (":" LogicValue)? "." 22 ParameterList<AssertionArgument> (":" LogicValue)? "."
23 } | 23 } |
24 UniqueDeclaration { 24 UniqueDeclaration {
25 kw<"unique"> sep<",", UniqueNodeName> "." 25 ckw<"unique"> sep<",", UniqueNodeName> "."
26 } | 26 } |
27 ScopeDeclaration { 27 ScopeDeclaration {
28 kw<"scope"> sep<",", ScopeElement> "." 28 ckw<"scope"> sep<",", ScopeElement> "."
29 } 29 }
30} 30}
31 31
32ReferenceDeclaration { 32ReferenceDeclaration {
33 (kw<"refers"> | kw<"contains">)? 33 ((kw<"refers"> | kw<"contains">) !times RelationName | !plus RelationName)
34 RelationName
35 RelationName 34 RelationName
36 ( "[" Multiplicity? "]" )? 35 ( "[" Multiplicity? "]" )?
37 (kw<"opposite"> RelationName)? 36 (kw<"opposite"> RelationName)?
38 ";"? 37 ";"?
39} 38}
40 39
40@precedence { times @left, plus }
41
41Parameter { RelationName? VariableName } 42Parameter { RelationName? VariableName }
42 43
43Conjunction { sep1<",", Literal> } 44Conjunction { sep1<",", Literal> }
@@ -53,7 +54,7 @@ Argument { VariableName | Real }
53AssertionArgument { NodeName | StarArgument | Real } 54AssertionArgument { NodeName | StarArgument | Real }
54 55
55LogicValue { 56LogicValue {
56 kw<"true"> | kw<"false"> | kw<"unknown"> | kw<"error"> 57 ckw<"true"> | ckw<"false"> | ckw<"unknown"> | ckw<"error">
57} 58}
58 59
59ScopeElement { RelationName ("=" | "+=") Multiplicity } 60ScopeElement { RelationName ("=" | "+=") Multiplicity }
@@ -72,6 +73,8 @@ QualifiedName { identifier ("::" identifier)* }
72 73
73kw<term> { @specialize[@name={term}]<identifier, term> } 74kw<term> { @specialize[@name={term}]<identifier, term> }
74 75
76ckw<term> { @extend[@name={term}]<identifier, term> }
77
75ParameterList<content> { "(" sep<",", content> ")" } 78ParameterList<content> { "(" sep<",", content> ")" }
76 79
77sep<separator, content> { sep1<separator, content>? } 80sep<separator, content> { sep1<separator, content>? }
diff --git a/language-web/webpack.config.js b/language-web/webpack.config.js
index c51d55d6..55b590ca 100644
--- a/language-web/webpack.config.js
+++ b/language-web/webpack.config.js
@@ -25,7 +25,6 @@ const publicHost = process.env['PUBLIC_HOST'] || listenHost;
25const publicPort = portNumberOrElse('PUBLIC_PORT', listenPort); 25const publicPort = portNumberOrElse('PUBLIC_PORT', listenPort);
26 26
27const resolveSources = sources => path.resolve(__dirname, 'src', sources); 27const resolveSources = sources => path.resolve(__dirname, 'src', sources);
28const resolveGenerated = sources => path.resolve(__dirname, 'build/generated/sources', sources);
29const mainJsSources = resolveSources('main/js'); 28const mainJsSources = resolveSources('main/js');
30const babelLoaderFilters = { 29const babelLoaderFilters = {
31 include: [mainJsSources], 30 include: [mainJsSources],
@@ -150,7 +149,6 @@ module.exports = {
150 modules: [ 149 modules: [
151 'node_modules', 150 'node_modules',
152 mainJsSources, 151 mainJsSources,
153 resolveGenerated('xtext/js'),
154 ], 152 ],
155 extensions: ['.js', '.jsx', '.ts', '.tsx'], 153 extensions: ['.js', '.jsx', '.ts', '.tsx'],
156 alias: { 154 alias: {