diff options
Diffstat (limited to 'language-web/src/main/js/language')
-rw-r--r-- | language-web/src/main/js/language/problem.grammar | 14 | ||||
-rw-r--r-- | language-web/src/main/js/language/props.ts | 7 |
2 files changed, 16 insertions, 5 deletions
diff --git a/language-web/src/main/js/language/problem.grammar b/language-web/src/main/js/language/problem.grammar index c242a4ba..8e39243f 100644 --- a/language-web/src/main/js/language/problem.grammar +++ b/language-web/src/main/js/language/problem.grammar | |||
@@ -1,3 +1,7 @@ | |||
1 | @detectDelim | ||
2 | |||
3 | @external prop implicitCompletion from '../../../../src/main/js/language/props.ts' | ||
4 | |||
1 | @top Problem { statement* } | 5 | @top Problem { statement* } |
2 | 6 | ||
3 | statement { | 7 | statement { |
@@ -24,7 +28,7 @@ statement { | |||
24 | RuleBody { ":" sep<OrOp, Conjunction> "~>" sep<OrOp, Action> "." } | 28 | RuleBody { ":" sep<OrOp, Conjunction> "~>" sep<OrOp, Action> "." } |
25 | } | | 29 | } | |
26 | Assertion { | 30 | Assertion { |
27 | ckw<"default">? (NotOp | UnknownOp)? RelationName | 31 | kw<"default">? (NotOp | UnknownOp)? RelationName |
28 | ParameterList<AssertionArgument> (":" LogicValue)? "." | 32 | ParameterList<AssertionArgument> (":" LogicValue)? "." |
29 | } | | 33 | } | |
30 | NodeValueAssertion { | 34 | NodeValueAssertion { |
@@ -34,7 +38,7 @@ statement { | |||
34 | ckw<"unique"> sep<",", UniqueNodeName> "." | 38 | ckw<"unique"> sep<",", UniqueNodeName> "." |
35 | } | | 39 | } | |
36 | ScopeDeclaration { | 40 | ScopeDeclaration { |
37 | ckw<"scope"> sep<",", ScopeElement> "." | 41 | kw<"scope"> sep<",", ScopeElement> "." |
38 | } | 42 | } |
39 | } | 43 | } |
40 | 44 | ||
@@ -89,11 +93,11 @@ VariableName { QualifiedName } | |||
89 | 93 | ||
90 | NodeName { QualifiedName } | 94 | NodeName { QualifiedName } |
91 | 95 | ||
92 | QualifiedName { identifier ("::" identifier)* } | 96 | QualifiedName[implicitCompletion=true] { identifier ("::" identifier)* } |
93 | 97 | ||
94 | kw<term> { @specialize[@name={term}]<identifier, term> } | 98 | kw<term> { @specialize[@name={term},implicitCompletion=true]<identifier, term> } |
95 | 99 | ||
96 | ckw<term> { @extend[@name={term}]<identifier, term> } | 100 | ckw<term> { @extend[@name={term},implicitCompletion=true]<identifier, term> } |
97 | 101 | ||
98 | ParameterList<content> { "(" sep<",", content> ")" } | 102 | ParameterList<content> { "(" sep<",", content> ")" } |
99 | 103 | ||
diff --git a/language-web/src/main/js/language/props.ts b/language-web/src/main/js/language/props.ts new file mode 100644 index 00000000..8e488bf5 --- /dev/null +++ b/language-web/src/main/js/language/props.ts | |||
@@ -0,0 +1,7 @@ | |||
1 | import { NodeProp } from '@lezer/common'; | ||
2 | |||
3 | export const implicitCompletion = new NodeProp({ | ||
4 | deserialize(s: string) { | ||
5 | return s === 'true'; | ||
6 | }, | ||
7 | }); | ||