From c1c062b6cf39fb41772b6869f4a2eb8349a9e5f6 Mon Sep 17 00:00:00 2001 From: Johan Maasing Date: Tue, 22 Apr 2025 20:28:17 +0200 Subject: [PATCH] Changed grammar for states --- README.md | 18 +++++++++--------- .../main/antlr4/nu/zoom/dsl/parser/States.g4 | 2 +- test01.states | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index d23fa85..d4306c2 100644 --- a/README.md +++ b/README.md @@ -163,9 +163,9 @@ name it from the last path segment and add 'Response' to the end of the data typ ### State DSL This is an example of a state file: ``` -start -> middle: message, -middle -> middle: selfmessage, -middle -> end: endmessage +start -> message -> middle , +middle -> selfmessage -> middle, +middle -> endmessage -> end ``` The file declares 3 transitions. The first line states: Transition from the 'start' state to the 'middle' state with the message 'message'. @@ -178,18 +178,18 @@ Since the parser will extract datatypes it is possible to define the fields of t complicated example: ``` -start -> middle: message(a: String), -middle(bar:Bar) -> middle: selfmessage, -middle -> end: endmessage +start -> message -> middle, +middle -> selfmessage -> middle(bar:bar), +middle -> message -> end ``` The data type for `middle` will have a field declaration with the name `bar` and the type `Bar`. Fields for the same state data type, or message data type, will be merged. Here is a complex example: ``` -start(s:S) -> middle(foo:foo): message(foo:foo), -middle -> middle(bar:bar): selfmessage(bar:bar), -middle -> end: message(bar:baz) +start(s:S) -> message(foo:foo) -> middle(foo:foo) , +middle -> selfmessage(bar:bar) -> middle(bar:bar), +middle -> message(bar:baz) -> end ``` Note that we can declare fields on both the `from` and `to` state declarations. The `middle` datat type will have field diff --git a/parser/src/main/antlr4/nu/zoom/dsl/parser/States.g4 b/parser/src/main/antlr4/nu/zoom/dsl/parser/States.g4 index dbfe628..d2a2b4d 100644 --- a/parser/src/main/antlr4/nu/zoom/dsl/parser/States.g4 +++ b/parser/src/main/antlr4/nu/zoom/dsl/parser/States.g4 @@ -15,7 +15,7 @@ grammar States; import Common; document : generatorconfig? transition (',' transition)* ; -transition : from RIGHT_ARROW to COLON message ; +transition : from RIGHT_ARROW message RIGHT_ARROW to ; from : state ; to : state ; message : typeName typeDeclaration? ; diff --git a/test01.states b/test01.states index bcb304f..3b9a67a 100644 --- a/test01.states +++ b/test01.states @@ -16,6 +16,6 @@ { title: SomeNodes, package: nu.zoom.dsl.states } -start(s:S) -> middle(foo:foo): message(foo:foo), -middle -> middle(bar:bar): selfmessage(bar:bar), -middle -> end: message(bar:baz) +start(s:S) -> message(foo:foo) -> middle(foo:foo) , +middle -> selfmessage(bar:bar) -> middle(bar:bar), +middle -> message(bar:baz) -> end