From a65bc22837ae30d15d2b1a6fe133fa0de78c91b5 Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Tue, 3 Sep 2024 09:30:23 +0200 Subject: [PATCH 01/10] feat: add syntax highligthing to lezer grammar --- grammar/src/index.ts | 37 ++++++++++++++++++++++--------------- grammar/src/syntax.grammar | 4 ++-- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/grammar/src/index.ts b/grammar/src/index.ts index eb60d1c7..b4e26b67 100644 --- a/grammar/src/index.ts +++ b/grammar/src/index.ts @@ -3,26 +3,33 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import { parser } from "./syntax.grammar" -import { LRLanguage, LanguageSupport, indentNodeProp, foldNodeProp, foldInside, delimitedIndent } from "@codemirror/language" +import { LRLanguage, LanguageSupport, indentNodeProp, foldNodeProp, foldInside, delimitedIndent, HighlightStyle, syntaxHighlighting } from "@codemirror/language" import { styleTags, tags as t } from "@lezer/highlight" import { completeFromList } from "@codemirror/autocomplete" +const syntax_colors = syntaxHighlighting( + HighlightStyle.define( + [ + { tag: t.heading, color: "purple" }, + { tag: t.heading1, color: "gray" }, + {tag: t.variableName, color: "red"}, + { tag: t.keyword, color: "green" }, + {tag: t.string, color: "blue"}, + {tag: t.lineComment, color: "gray"} + ], + { all: { color: "black" } } + ) + ); export const SlangroomLanguage = LRLanguage.define({ parser: parser.configure({ props: [ - indentNodeProp.add({ - Application: delimitedIndent({ closing: ")", align: false }) - }), - foldNodeProp.add({ - Application: foldInside - }), styleTags({ - Identifier: t.variableName, - WhenStatement: t.variableName, - ThenStatement: t.bool, - Rule: t.string, - StringLitteral: t.string, - LineComment: t.lineComment + "Given Then When and" : t.variableName, + "have send open connect print output" : t.keyword, + "RuleStatement!": t.heading, + "ScenarioStatement!": t.heading1, + StringLiteral: t.string, + Comment: t.lineComment, }) ] }), @@ -31,7 +38,7 @@ export const SlangroomLanguage = LRLanguage.define({ } }) -export const ac = SlangroomLanguage.data.of({ +const ac = SlangroomLanguage.data.of({ autocomplete: completeFromList([ { label: "given", type: "keyword" }, { label: "then", type: "keyword" }, @@ -40,5 +47,5 @@ export const ac = SlangroomLanguage.data.of({ }) export function Slangroom() { - return new LanguageSupport(SlangroomLanguage, [ac]) + return new LanguageSupport(SlangroomLanguage, [syntax_colors, ac]) } diff --git a/grammar/src/syntax.grammar b/grammar/src/syntax.grammar index ca3b6007..5b3a20f1 100644 --- a/grammar/src/syntax.grammar +++ b/grammar/src/syntax.grammar @@ -35,7 +35,7 @@ VersionNumber { } @skip { - space | newline | comment + space | newline | Comment } GivenStatement { @@ -426,7 +426,7 @@ Keywords { @tokens { space { " " | "\t" } newline { "\n" | "\r\n" } - comment { "#" (![\n])* } + Comment { "#" (![\n])* } StringLiteral { "'" (![\\\n'] | "\\" _)* "'" } symbols { $[a-zA-Z_] | "_" } Identifier { symbols+ Number* } From 47a23c27bfb27c1362ca85a915a5c532fe1e3d28 Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Tue, 3 Sep 2024 09:39:13 +0200 Subject: [PATCH 02/10] add If EndIf as keywords --- grammar/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grammar/src/index.ts b/grammar/src/index.ts index b4e26b67..40266503 100644 --- a/grammar/src/index.ts +++ b/grammar/src/index.ts @@ -24,7 +24,7 @@ export const SlangroomLanguage = LRLanguage.define({ parser: parser.configure({ props: [ styleTags({ - "Given Then When and" : t.variableName, + "Given Then When and If EndIf" : t.variableName, "have send open connect print output" : t.keyword, "RuleStatement!": t.heading, "ScenarioStatement!": t.heading1, From faeee34ec858626fa4a251afa5e9578ee9ecafa2 Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Tue, 3 Sep 2024 12:47:26 +0200 Subject: [PATCH 03/10] fix: scenario highlighting --- grammar/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grammar/src/index.ts b/grammar/src/index.ts index 40266503..45378feb 100644 --- a/grammar/src/index.ts +++ b/grammar/src/index.ts @@ -27,7 +27,7 @@ export const SlangroomLanguage = LRLanguage.define({ "Given Then When and If EndIf" : t.variableName, "have send open connect print output" : t.keyword, "RuleStatement!": t.heading, - "ScenarioStatement!": t.heading1, + "ScenarioStatement/...": t.heading1, StringLiteral: t.string, Comment: t.lineComment, }) From cc7357771cc53734fce47060e10acb11e6cf8e4b Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Tue, 3 Sep 2024 12:48:31 +0200 Subject: [PATCH 04/10] fix: now comment is seen as a statement --- grammar/src/syntax.grammar | 6 +- grammar/test/cases.txt | 449 ++++++++++++++++++++----------------- 2 files changed, 242 insertions(+), 213 deletions(-) diff --git a/grammar/src/syntax.grammar b/grammar/src/syntax.grammar index 5b3a20f1..f4d9dd26 100644 --- a/grammar/src/syntax.grammar +++ b/grammar/src/syntax.grammar @@ -3,11 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-or-later @top Statement { - ( RuleStatement? ScenarioStatement* RuleStatement? SlangroomStatement) + ( RuleStatement | ScenarioStatement | RuleStatement | SlangroomStatement | Comment)* } SlangroomStatement { - (GivenStatement | ThenStatement | ThenPrint | GivenHaveStatement | GivenName | WhenStatement | IfEndifStatement)* + (GivenStatement | ThenStatement | ThenPrint | GivenHaveStatement | GivenName | WhenStatement | IfEndifStatement) } RuleStatement { @@ -35,7 +35,7 @@ VersionNumber { } @skip { - space | newline | Comment + space | newline } GivenStatement { diff --git a/grammar/test/cases.txt b/grammar/test/cases.txt index 51d801c2..071b96ca 100644 --- a/grammar/test/cases.txt +++ b/grammar/test/cases.txt @@ -17,9 +17,9 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), SlangroomStatement(GivenStatement(Given,I,DbStatement(DbConnectAction(connect,to, StringLiteral, and, - DbSend(send, record, StringLiteral, and, DbSend(send, table StringLiteral, and,DbAction(read,the,record,of,the,table)))), and, SaveAction(output,into, StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,DbStatement(DbConnectAction(connect,to,StringLiteral,and, +DbSend(send,record,StringLiteral,and,DbSend(send,table,StringLiteral,and,DbAction(read,the,record,of,the,table)))),and,SaveAction(output,into,StringLiteral)))), +SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) #Ethereum complex example @@ -52,17 +52,26 @@ Then I connect to 'ethereum' and send transaction 'signed_ethereum_transaction' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,Identifier,Identifier,Keywords(object),Identifier,Identifier), - SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumSend(send,address,StringLiteral,and, - EthereumAction(read,the,ethereum,nonce))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I, - EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumAction(read,the,suggested,gas,price)),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral),GivenHaveStatement(Given,I,have,the,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(ethereum),Keywords(transaction),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),Keywords(ethereum),Keywords(transaction),Keywords(to),Keywords(store),StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(ethereum),Keywords(transaction),Identifier,Identifier,StringLiteral), - ThenPrint(Then,print,Keywords(the),StringLiteral),ThenStatement(Then,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and, - EthereumSend(send,transaction,StringLiteral,and,EthereumAction(read,the,ethereum,transaction,id,after,broadcast))),and,SaveAction(output,into,StringLiteral))))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), + ScenarioStatement(Scenario,StringLiteral,Identifier,Identifier,Keywords(object),Identifier,Identifier), + SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumSend(send,address,StringLiteral,and,EthereumAction(read,the,ethereum,nonce))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumAction(read,the,suggested,gas,price)),and,SaveAction(output,into,StringLiteral)))), + Comment, + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)), + Comment, + SlangroomStatement(GivenHaveStatement(Given,I,have,the,StringLiteral)), + Comment, + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)), + Comment, + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(ethereum),Keywords(transaction),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),Keywords(ethereum),Keywords(transaction),Keywords(to),Keywords(store),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(ethereum),Keywords(transaction),Identifier,Identifier,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), + SlangroomStatement(ThenStatement(Then,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumSend(send,transaction,StringLiteral,and,EthereumAction(read,the,ethereum,transaction,id,after,broadcast))),and,SaveAction(output,into,StringLiteral))))) + #Fs example @@ -74,9 +83,11 @@ Then print the 'file_path_1' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and, - FsAction(verify,file,exists))))),GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(verify,file,does,not,exist))))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(verify,file,exists)))))), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(verify,file,does,not,exist)))))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) #Git example @@ -89,9 +100,11 @@ Then print the data ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,GitStatement(GitOpenOrConnectAction - (connect,to,StringLiteral,and,GitSend(send,path,StringLiteral,and,GitAction(clone,repository))))),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - ThenPrint(Then,print,Keywords(the),Keywords(data)))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), + SlangroomStatement(GivenStatement(Given,I,GitStatement(GitOpenOrConnectAction(connect,to,StringLiteral,and,GitSend(send,path,StringLiteral,and,GitAction(clone,repository)))))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),Keywords(data)))) + #Helpers example @@ -104,9 +117,11 @@ Then print the data ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,array,StringLiteral,and, - HelpersSend(send,values,StringLiteral,and,HelpersAction(manipulate,and,concat))),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),Keywords(data)))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,array,StringLiteral,and,HelpersSend(send,values,StringLiteral,and,HelpersAction(manipulate,and,concat))), + and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),Keywords(data)))) #Http example @@ -118,8 +133,11 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and, - HttpAction(do,get)),and,SaveAction(output,into,StringLiteral))),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), + SlangroomStatement(GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpAction(do,get)),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) + #Json-schema example @@ -132,9 +150,8 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,JsonSchemaStatement(JsonSchemaSend(send,json_data,StringLiteral,and, - JsonSchemaSend(send,json_schema,StringLiteral,and,JsonSchemaAction(validate,json))),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,JsonSchemaStatement(JsonSchemaSend(send,json_data,StringLiteral,and,JsonSchemaSend(send,json_schema,StringLiteral,and,JsonSchemaAction(validate,json))),and,SaveAction(output,into,StringLiteral)))),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) + #Oauth example @@ -153,12 +170,11 @@ Then I send request 'request' and send server_data 'server_data' and generate ac ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,Keywords(url),Identifier),SlangroomStatement( - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(get),Keywords(parameters),Keywords(from),StringLiteral,Identifier,Identifier,Identifier), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral), - ThenStatement(Then,I,OAuthStatement(OAuthSend(send,request,StringLiteral,and,OAuthSend(send,server_data,StringLiteral,and,OAuthAction(generate,access,token))),and, - SaveAction(output,into,StringLiteral))))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,Keywords(url),Identifier), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(get),Keywords(parameters),Keywords(from),StringLiteral,Identifier,Identifier,Identifier)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), + SlangroomStatement(ThenStatement(Then,I,OAuthStatement(OAuthSend(send,request,StringLiteral,and,OAuthSend(send,server_data,StringLiteral,and,OAuthAction(generate,access,token))),and,SaveAction(output,into,StringLiteral))))) #Pocketbase example @@ -174,11 +190,11 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,PocketbaseStatement(PocketbaseConnectAction(connect,to,StringLiteral,and, - PocketbaseAction(start,pb,client)))),GivenStatement(Given,I,PocketbaseStatement(PocketbaseConnectAction(PocketbaseSend(send,my_credentials,StringLiteral,and, - PocketbaseAction(login))))),GivenStatement(Given,I,PocketbaseStatement(PocketbaseConnectAction(PocketbaseSend(send,create_parameters,StringLiteral,and, - PocketbaseSend(send,record_parameters,StringLiteral,and,PocketbaseAction(create,record)))),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,PocketbaseStatement(PocketbaseConnectAction(connect,to,StringLiteral,and,PocketbaseAction(start,pb,client))))), + SlangroomStatement(GivenStatement(Given,I,PocketbaseStatement(PocketbaseConnectAction(PocketbaseSend(send,my_credentials,StringLiteral,and,PocketbaseAction(login)))))), + SlangroomStatement(GivenStatement(Given,I,PocketbaseStatement(PocketbaseConnectAction(PocketbaseSend(send,create_parameters,StringLiteral,and,PocketbaseSend(send,record_parameters,StringLiteral,and,PocketbaseAction(create,record)))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) #Qrcode example @@ -191,9 +207,7 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,QrCodeStatement(QrCodeSend(send,text,StringLiteral,and, - QrCodeAction(create,qr,code)),and,SaveAction(output,into,StringLiteral))),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,QrCodeStatement(QrCodeSend(send,text,StringLiteral,and,QrCodeAction(create,qr,code)),and,SaveAction(output,into,StringLiteral)))),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) #Redis example @@ -206,9 +220,8 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,RedisStatement(RedisConnectAction(connect,to,StringLiteral,and, - RedisSend(send,key,StringLiteral,and,RedisAction(delete,key,from,redis))),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,RedisStatement(RedisConnectAction(connect,to,StringLiteral,and,RedisSend(send,key,StringLiteral,and,RedisAction(delete,key,from,redis))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) #Shell example @@ -221,9 +234,8 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,ShellStatement(ShellSend(send,command,StringLiteral,and, - ShellAction(execute,in,shell)),and,SaveAction(output,into,StringLiteral))),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,ShellStatement(ShellSend(send,command,StringLiteral,and,ShellAction(execute,in,shell)),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) #Timestamp example @@ -239,10 +251,10 @@ Then print the 'result_in_milliseconds' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,TimestampStatement(TimestampAction(fetch,the,local,timestamp,in,seconds),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,TimestampStatement(TimestampAction(fetch,the,local,timestamp,in,milliseconds),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - ThenPrint(Then,print,Keywords(the),StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,TimestampStatement(TimestampAction(fetch,the,local,timestamp,in,seconds),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,TimestampStatement(TimestampAction(fetch,the,local,timestamp,in,milliseconds),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) @@ -257,9 +269,8 @@ Then print the 'result' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and, - ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral))) +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),SlangroomStatement(GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral))) #Test from Didroom 1 @@ -309,25 +320,31 @@ Then I send request 'request' and send server_data 'server' and verify request p ==> Statement(ScenarioStatement(Scenario,StringLiteral),ScenarioStatement(Scenario,StringLiteral,Keywords(create),Keywords(jwk)),RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), - SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral))), - GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))), - GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenName(Given,my,name,is,Keywords(in),Keywords(a),StringLiteral,Keywords(named),StringLiteral), - GivenHaveStatement(Given,I,have,the,StringLiteral,in,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(jwk),Keywords(of),Identifier,Keywords(public),Keywords(key),Keywords(with),Identifier,Keywords(key)), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral),WhenStatement(When,I,Keywords(set),StringLiteral,Keywords(to),StringLiteral,Keywords(as),StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(url),Keywords(from),StringLiteral), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),Identifier,Identifier,Keywords(of),StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),Identifier,StringLiteral,Keywords(bytes),Keywords(of),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral), - ThenPrint(Then,print,Keywords(the),StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral), - ThenStatement(Then,I,OAuthStatement(OAuthSend(send,request,StringLiteral,and,OAuthSend(send,server_data,StringLiteral,and,OAuthAction(verify,request,parameters))))))) + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),Comment, + SlangroomStatement(GivenName(Given,my,name,is,Keywords(in),Keywords(a),StringLiteral,Keywords(named),StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,the,StringLiteral,in,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),Comment, + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(jwk),Keywords(of),Identifier,Keywords(public),Keywords(key),Keywords(with),Identifier,Keywords(key))), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral)),Comment, + SlangroomStatement(WhenStatement(When,I,Keywords(set),StringLiteral,Keywords(to),StringLiteral,Keywords(as),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(url),Keywords(from),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),Identifier,Identifier,Keywords(of),StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),Identifier,StringLiteral,Keywords(bytes),Keywords(of),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), + SlangroomStatement(ThenStatement(Then,I,OAuthStatement(OAuthSend(send,request,StringLiteral,and,OAuthSend(send,server_data,StringLiteral,and,OAuthAction(verify,request,parameters))))))) #Test from Didroom 2 @@ -380,45 +397,41 @@ Given I have a 'string dictionary' named 'server_response' Then print the data ==> -Statement(SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and, - SaveAction(output,Identifier,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,Identifier,into,StringLiteral))),GivenStatement(Given,I,FsStatement(FsConnectAction( - FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement( - HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))), - GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and, - HelpersAction(manipulate,and,set)))))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and, - FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and, - ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral))), - GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpAction(do,get)),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and, - FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and, - ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral))), - GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpAction(do,get)),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and, - ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I, - HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),GivenStatement(Given,I, - HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))), - GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and, - HelpersAction(manipulate,and,set)))))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),GivenStatement(Given,I,HelpersStatement( - HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))), - GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral))), - GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and, - ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement( - HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))), - GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpSend(send,object,StringLiteral,and,HttpAction(do,post))),and, - SaveAction(output,into,StringLiteral))),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),ThenPrint(Then,print,Keywords(the),Keywords(data)))) + +Statement(Comment,SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,Identifier,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,Identifier,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpAction(do,get)),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpAction(do,get)),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpSend(send,object,StringLiteral,and,HttpAction(do,post))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),Keywords(data)))) + #Test from Didroom 3 @@ -495,42 +508,60 @@ Then I manipulate and delete and output into 'parresult' ==> -Statement(SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral))), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenName(Given,my,name,is,Keywords(in),Keywords(a),StringLiteral,Keywords(named),StringLiteral), - GivenHaveStatement(Given,I,have,the,StringLiteral,in,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral,inside,StringLiteral), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral),WhenStatement(When,I,Keywords(set),StringLiteral,Keywords(to),StringLiteral,Keywords(as),StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(url),Keywords(from),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request), - Keywords(to),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),Identifier,Identifier,Keywords(of),StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(json),Identifier,Identifier,Keywords(of),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral),WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),Identifier,Identifier,Keywords(of),StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),Identifier,StringLiteral,Keywords(bytes),Keywords(of),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral), - WhenStatement(When,I,Keywords(create),Identifier,Keywords(of),Identifier,StringLiteral,Keywords(from),Keywords(array),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral), - WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral), - WhenStatement(When,I,Keywords(create),Keywords(jwk),Keywords(of),Identifier,Keywords(public),Keywords(key),Keywords(with),Identifier,Keywords(key)), - WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral),ThenPrint(Then,print,Keywords(the),StringLiteral), - ThenPrint(Then,print,Keywords(the),StringLiteral),ThenStatement(Then,I,OAuthStatement(OAuthSend(send,request,StringLiteral,and, - OAuthSend(send,client,StringLiteral,and,OAuthSend(send,server_data,StringLiteral,and,OAuthSend(send,expires_in,StringLiteral,and,OAuthAction(generate,request,uri))))),and, - SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))), - ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I, - HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement( - HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))), - ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))))) +Statement(SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),Comment, + SlangroomStatement(GivenName(Given,my,name,is,Keywords(in),Keywords(a),StringLiteral,Keywords(named),StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,the,StringLiteral,in,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),Comment, + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral,inside,StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral)),Comment, + SlangroomStatement(WhenStatement(When,I,Keywords(set),StringLiteral,Keywords(to),StringLiteral,Keywords(as),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(url),Keywords(from),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),Identifier,Identifier,Keywords(of),StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(json),Identifier,Identifier,Keywords(of),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),Identifier,Identifier,Keywords(of),StringLiteral,Keywords(as),Identifier,Keywords(request),Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),Identifier,StringLiteral,Keywords(bytes),Keywords(of),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral)),Comment, + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Identifier,Keywords(of),Identifier,StringLiteral,Keywords(from),Keywords(array),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),StringLiteral,Keywords(to),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral)),Comment, + SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(jwk),Keywords(of),Identifier,Keywords(public),Keywords(key),Keywords(with),Identifier,Keywords(key))), + SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), + SlangroomStatement(ThenStatement(Then,I,OAuthStatement(OAuthSend(send,request,StringLiteral,and,OAuthSend(send,client,StringLiteral,and,OAuthSend(send,server_data,StringLiteral,and,OAuthSend(send,expires_in,StringLiteral,and,OAuthAction(generate,request,uri))))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))))) + #Test from Didroom 4 @@ -647,65 +678,63 @@ Then I manipulate and delete and output into 'secrets' ==> -Statement(RuleStatement(Rule,GenericRule(Keywords(output),Identifier,Identifier)),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier), - ScenarioStatement(Scenario,Keywords(ethereum)),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier), - ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),SlangroomStatement(GivenStatement(Given,I,ShellStatement( - ShellSend(send,command,StringLiteral,and,ShellAction(execute,in,shell)),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,FsStatement(FsConnectAction( - FsSend(send,path,StringLiteral,and,FsAction(verify,file,does,not,exist))))),GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and, - FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and, - ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,Identifier,into,StringLiteral))), - GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and, - SaveAction(output,into,StringLiteral))),GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersAction(manipulate,and,get))),and,SaveAction(output,Identifier,into,StringLiteral))),GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and, - FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral))),GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral), - GivenName(Given,I,my,name,is,Keywords(in),Keywords(a),StringLiteral,Keywords(named),StringLiteral,HaveStatement(and,I,have,a,StringLiteral,named,StringLiteral), - HaveStatement(and,I,have,a,StringLiteral,in,StringLiteral),HaveStatement(and,I,have,a,StringLiteral,named,StringLiteral)),IfEndifStatement(Condition(If,I,verify,StringLiteral, - Keywords(is),Identifier,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral,Keywords(and),I,Identifier,StringLiteral,Keywords(to), - StringLiteral),EndIf),IfEndifStatement(Condition(If,I,verify,StringLiteral,Keywords(is),Keywords(not),Identifier,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier, - StringLiteral,Keywords(to),StringLiteral),EndIf),WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create), - Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Keywords(ethereum),Keywords(address),Keywords(and),I,Keywords(create), - Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create), - Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create), - Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key)),ThenPrint(Then,I,print,Keywords(the), - StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and), - I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(as),StringLiteral,Keywords(and), - I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(my),Keywords(name),Keywords(in),StringLiteral,Keywords(and), - I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,HelpersStatement( - HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))), - ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and, - HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,HelpersStatement( - HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))), - ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and, - HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,HelpersStatement( - HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))), - ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and, - HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))), - and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and, - ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement( - HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and, - SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpSend(send,object,StringLiteral,and,HttpAction(do,post))), - and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))), - ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and, - SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpSend(send,object,StringLiteral,and,HttpAction(do,post))), - and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))), - ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,FsStatement(FsConnectAction( - FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,FsStatement(FsConnectAction( - FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,ZencodeStatement( - ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and, - SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and, - HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and, - HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))),ThenStatement(Then,I, - HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set)))))), - ThenStatement(Then,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsSend(send,content,StringLiteral,and,FsAction(store,in,file)))))), - ThenStatement(Then,I,ShellStatement(ShellSend(send,command,StringLiteral,and,ShellAction(execute,in,shell)))),ThenStatement(Then,I,FsStatement(FsConnectAction( - FsSend(send,path,StringLiteral,and,FsSend(send,content,StringLiteral,and,FsAction(store,in,file)))))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and, - SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))), - ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement( - HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and, - SaveAction(output,into,StringLiteral))),ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))))) +Statement(RuleStatement(Rule,GenericRule(Keywords(output),Identifier,Identifier)),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Keywords(ethereum)), + ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),Comment, + SlangroomStatement(GivenStatement(Given,I,ShellStatement(ShellSend(send,command,StringLiteral,and,ShellAction(execute,in,shell)),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(verify,file,does,not,exist)))))),Comment, + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,Identifier,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,Identifier,into,StringLiteral)))),Comment, + SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), + SlangroomStatement(GivenName(Given,I,my,name,is,Keywords(in),Keywords(a),StringLiteral,Keywords(named),StringLiteral,HaveStatement(and,I,have,a,StringLiteral,named,StringLiteral),HaveStatement(and,I,have,a,StringLiteral,in,StringLiteral),HaveStatement(and,I,have,a,StringLiteral,named,StringLiteral))), + SlangroomStatement(IfEndifStatement(Condition(If,I,verify,StringLiteral,Keywords(is),Identifier,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral,Keywords(and),I,Identifier,StringLiteral,Keywords(to),StringLiteral),EndIf)), + SlangroomStatement(IfEndifStatement(Condition(If,I,verify,StringLiteral,Keywords(is),Keywords(not),Identifier,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral),EndIf)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Keywords(ethereum),Keywords(address),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key))), + SlangroomStatement(ThenPrint(Then,I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(as),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(my),Keywords(name),Keywords(in),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral)),Comment,Comment, + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))),Comment, + SlangroomStatement(ThenStatement(Then,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(ThenStatement(Then,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpSend(send,object,StringLiteral,and,HttpAction(do,post))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HttpStatement(HttpConnectAction(connect,to,StringLiteral,and,HttpSend(send,object,StringLiteral,and,HttpAction(do,post))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))),Comment, + SlangroomStatement(ThenStatement(Then,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,ZencodeStatement(ZencodeSend(send,keys,StringLiteral,and,ZencodeSend(send,data,StringLiteral,and,ZencodeSend(send,script,StringLiteral,and,ZencodeAction(execute,zencode)))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), + SlangroomStatement(ThenStatement(Then,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsSend(send,content,StringLiteral,and,FsAction(store,in,file))))))), + SlangroomStatement(ThenStatement(Then,I,ShellStatement(ShellSend(send,command,StringLiteral,and,ShellAction(execute,in,shell))))), + SlangroomStatement(ThenStatement(Then,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsSend(send,content,StringLiteral,and,FsAction(store,in,file))))))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral)))), + SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersAction(manipulate,and,delete),and,SaveAction(output,into,StringLiteral))))) + +#Comment after Scenario + +Scenario eddsa: verify presentation +# this should not break comments + +==> +Statement(ScenarioStatement(Scenario,Identifier,Keywords(verify),Identifier),Comment) From 06cc070b3b4dd4ac11f86e10c64e66800d291666 Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Wed, 4 Sep 2024 09:15:34 +0200 Subject: [PATCH 05/10] fix: and color --- grammar/src/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/grammar/src/index.ts b/grammar/src/index.ts index 45378feb..f39cbc33 100644 --- a/grammar/src/index.ts +++ b/grammar/src/index.ts @@ -15,7 +15,8 @@ const syntax_colors = syntaxHighlighting( {tag: t.variableName, color: "red"}, { tag: t.keyword, color: "green" }, {tag: t.string, color: "blue"}, - {tag: t.lineComment, color: "gray"} + {tag: t.lineComment, color: "gray"}, + {tag: t.heading2, color: "black"} ], { all: { color: "black" } } ) @@ -28,6 +29,7 @@ export const SlangroomLanguage = LRLanguage.define({ "have send open connect print output" : t.keyword, "RuleStatement!": t.heading, "ScenarioStatement/...": t.heading1, + "DbAction! EthereumAction! FsAction! GitAction! HelpersAction! HttpAction! JsonSchemaAction! OAuthAction! PocketbaseAction! QrCodeAction! RedisAction! ShellAction! TimestampAction! WalletAction! ZencodeAction!": t.heading2, StringLiteral: t.string, Comment: t.lineComment, }) From d700a5d521abf3fc912a306047089db229efc7d6 Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Wed, 4 Sep 2024 09:25:41 +0200 Subject: [PATCH 06/10] add Foreach statement --- grammar/src/index.ts | 2 +- grammar/src/syntax.grammar | 11 ++++++++--- grammar/test/cases.txt | 29 +++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/grammar/src/index.ts b/grammar/src/index.ts index f39cbc33..34763ace 100644 --- a/grammar/src/index.ts +++ b/grammar/src/index.ts @@ -25,7 +25,7 @@ export const SlangroomLanguage = LRLanguage.define({ parser: parser.configure({ props: [ styleTags({ - "Given Then When and If EndIf" : t.variableName, + "Given Then When and in inside If EndIf Foreach EndForeach" : t.variableName, "have send open connect print output" : t.keyword, "RuleStatement!": t.heading, "ScenarioStatement/...": t.heading1, diff --git a/grammar/src/syntax.grammar b/grammar/src/syntax.grammar index f4d9dd26..0a6bbd0e 100644 --- a/grammar/src/syntax.grammar +++ b/grammar/src/syntax.grammar @@ -7,7 +7,7 @@ } SlangroomStatement { - (GivenStatement | ThenStatement | ThenPrint | GivenHaveStatement | GivenName | WhenStatement | IfEndifStatement) + (GivenStatement | ThenStatement | ThenPrint | GivenHaveStatement | GivenName | WhenStatement | IfEndifStatement |ForEachStatement) } RuleStatement { @@ -73,12 +73,17 @@ WhenStatement { } IfEndifStatement{ - Condition+ (WhenStatement | ThenStatement | ThenPrint)* kw<"EndIf"> + Condition+ ( GivenStatement | WhenStatement | ThenStatement | ThenPrint)* kw<"EndIf"> } Condition { kw<"If"> kw<"I"> kw<"verify"> (Identifier | Keywords | StringLiteral)+ - } +} + +ForEachStatement { + kw<"Foreach"> (StringLiteral | Identifier | Keywords) (kw<"in"> | kw<"inside">) (StringLiteral | Identifier | Keywords)+ (GivenStatement | WhenStatement | ThenStatement | ThenPrint)* + kw<"EndForeach"> +} // ===== Plugin-Specific Statements ===== diff --git a/grammar/test/cases.txt b/grammar/test/cases.txt index 071b96ca..6fb87542 100644 --- a/grammar/test/cases.txt +++ b/grammar/test/cases.txt @@ -738,3 +738,32 @@ Scenario eddsa: verify presentation ==> Statement(ScenarioStatement(Scenario,Identifier,Keywords(verify),Identifier),Comment) + +#Foreach script + +Given I have a 'string array' named 'to_be_hashed' +Given I have a 'float' named 'begin' inside 'loop_parameters' +Given I have a 'float' named 'end' inside 'loop_parameters' +Given I have a 'float' named 'step' inside 'loop_parameters' +When I create the 'base64 array' named 'array of hashes' +Foreach 'element_to_be_hashed' inside 'to_be_hashed' +When I create the hash of 'element_to_be_hashed' +When I move 'hash' in 'array of hashes' +EndForeach +When I create the 'number array' named 'numbers' +Foreach 'number_in_array' in sequence from 'begin' to 'end' with step 'step' +When I move 'number_in_array' in 'numbers' +EndForeach +Then print 'array of hashes' +Then print 'to_be_hashed' +Then print 'numbers' + +==> + +Statement(SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral,inside,StringLiteral)), + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral,inside,StringLiteral)),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral,inside,StringLiteral)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),StringLiteral,Keywords(named),StringLiteral)),SlangroomStatement(ForEachStatement(Foreach,StringLiteral,inside,StringLiteral, + WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(of),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral),EndForeach)), + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),StringLiteral,Keywords(named),StringLiteral)),SlangroomStatement(ForEachStatement(Foreach,StringLiteral,in,Identifier,Keywords(from),StringLiteral,Keywords(to),StringLiteral,Keywords(with),Identifier,StringLiteral, + WhenStatement(When,I,Identifier,StringLiteral,Keywords(in),StringLiteral),EndForeach)),SlangroomStatement(ThenPrint(Then,print,StringLiteral)),SlangroomStatement(ThenPrint(Then,print,StringLiteral)), + SlangroomStatement(ThenPrint(Then,print,StringLiteral))) From 856364f6aa4b9d780dd34478cdec7d90d635bca7 Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Thu, 5 Sep 2024 10:36:26 +0200 Subject: [PATCH 07/10] fix: add newline to the end of the statements --- .gitignore | 3 +- grammar/src/index.ts | 3 +- grammar/src/syntax.grammar | 45 +++++++++++++++++---------- grammar/src/syntax.grammar.terms.d.ts | 1 + grammar/src/tokens.js | 11 +++++++ grammar/test/cases.txt | 28 +++++++---------- 6 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 grammar/src/syntax.grammar.terms.d.ts create mode 100644 grammar/src/tokens.js diff --git a/.gitignore b/.gitignore index 2037d7f4..b55f7165 100644 --- a/.gitignore +++ b/.gitignore @@ -77,6 +77,7 @@ node_modules !/grammar/rollup.config.js !/grammar/tsconfig.json !/grammar/.releaserc - +!/grammar/src/syntax.grammar.terms.d.ts +!/grammar/src/tokens.js diff --git a/grammar/src/index.ts b/grammar/src/index.ts index 34763ace..416e258c 100644 --- a/grammar/src/index.ts +++ b/grammar/src/index.ts @@ -3,7 +3,7 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import { parser } from "./syntax.grammar" -import { LRLanguage, LanguageSupport, indentNodeProp, foldNodeProp, foldInside, delimitedIndent, HighlightStyle, syntaxHighlighting } from "@codemirror/language" +import { LRLanguage, LanguageSupport, HighlightStyle, syntaxHighlighting } from "@codemirror/language" import { styleTags, tags as t } from "@lezer/highlight" import { completeFromList } from "@codemirror/autocomplete" @@ -29,6 +29,7 @@ export const SlangroomLanguage = LRLanguage.define({ "have send open connect print output" : t.keyword, "RuleStatement!": t.heading, "ScenarioStatement/...": t.heading1, + "ScenarioComment!": t.heading1, "DbAction! EthereumAction! FsAction! GitAction! HelpersAction! HttpAction! JsonSchemaAction! OAuthAction! PocketbaseAction! QrCodeAction! RedisAction! ShellAction! TimestampAction! WalletAction! ZencodeAction!": t.heading2, StringLiteral: t.string, Comment: t.lineComment, diff --git a/grammar/src/syntax.grammar b/grammar/src/syntax.grammar index 0a6bbd0e..052d5a25 100644 --- a/grammar/src/syntax.grammar +++ b/grammar/src/syntax.grammar @@ -3,7 +3,11 @@ // SPDX-License-Identifier: AGPL-3.0-or-later @top Statement { - ( RuleStatement | ScenarioStatement | RuleStatement | SlangroomStatement | Comment)* + ( RuleStatement | ScenarioStatement | RuleStatement | SlangroomStatement | Comment )* +} + +Comment { + comment (newline+ |eof) } SlangroomStatement { @@ -11,13 +15,15 @@ SlangroomStatement { } RuleStatement { - kw<"Rule"> (VersionRule | UnknownIgnoreRule | GenericRule) + kw<"Rule"> (VersionRule | UnknownIgnoreRule | GenericRule) ( newline+ | eof ) } ScenarioStatement { - kw<"Scenario"> (StringLiteral| Identifier | Keywords) ":"? (Identifier | Keywords)* + kw<"Scenario"> (StringLiteral| Identifier | Keywords) ScenarioComment? ( newline+ | eof ) +} +ScenarioComment { + ":" (Identifier | Keywords | StringLiteral)* } - VersionRule { kw<"version"> VersionNumber } @@ -35,54 +41,56 @@ VersionNumber { } @skip { - space | newline + space } GivenStatement { kw<"Given"> kw<"I"> (DbStatement | EthereumStatement | FsStatement | GitStatement | HelpersStatement | HttpStatement | JsonSchemaStatement | OAuthStatement | PocketbaseStatement | QrCodeStatement | RedisStatement | ShellStatement | TimestampStatement | WalletStatement | ZencodeStatement) + ( newline+ | eof ) } ThenStatement { kw<"Then"> kw<"I"> (DbStatement | EthereumStatement | FsStatement | GitStatement | HelpersStatement | HttpStatement | JsonSchemaStatement | OAuthStatement | PocketbaseStatement | QrCodeStatement | RedisStatement | ShellStatement | TimestampStatement | WalletStatement | ZencodeStatement) + ( newline+ | eof ) } ThenPrint { - kw<"Then"> kw<"I">? kw<"print"> (StringLiteral | Identifier | Keywords)+ (kw<"I"> kw<"print"> (StringLiteral | Identifier | Keywords)+)* + kw<"Then"> kw<"I">? kw<"print"> (StringLiteral | Identifier | Keywords)+ (newline kw<"and"> +kw<"I"> kw<"print"> (StringLiteral | Identifier | Keywords)+)* ( newline+ | eof ) } GivenHaveStatement { kw<"Given"> kw<"that">? kw<"I"> kw<"have"> (kw<"a">? | kw<"my">? | kw<"the">?) kw<"valid">? StringLiteral kw<"named">? StringLiteral? (kw<"inside"> | kw<"in">)? kw<"named">? StringLiteral? - (kw <"and"> kw<"I"> kw<"have"> (kw<"a">? | kw<"my">?) kw<"valid">? StringLiteral kw<"named">? StringLiteral? (kw<"inside"> | kw<"in">)? kw<"named">? StringLiteral?)* + (newline* kw <"and"> kw<"I"> kw<"have"> (kw<"a">? | kw<"my">?) kw<"valid">? StringLiteral kw<"named">? StringLiteral? (kw<"inside"> | kw<"in">)? kw<"named">? StringLiteral?)* ( newline+ | eof ) } HaveStatement{ - kw<"and"> kw<"I"> kw<"have"> (kw<"a">? | kw<"my">?) kw<"valid">? StringLiteral kw<"named">? StringLiteral? (kw<"inside"> | kw<"in">)? kw<"named">? StringLiteral? + newline+ kw<"and"> kw<"I"> kw<"have"> (kw<"a">? | kw<"my">?) kw<"valid">? StringLiteral kw<"named">? StringLiteral? (kw<"inside"> | kw<"in">)? kw<"named">? StringLiteral? } GivenName { - (kw<"Given"> kw<"I"> kw<"am"> + ((kw<"Given"> kw<"I"> kw<"am"> (kw<"known"> kw<"as">)? StringLiteral) | (kw<"Given"> kw<"I">? kw<"my"> kw<"name"> kw<"is"> - (Identifier | Keywords | StringLiteral)+) (HaveStatement)* + (Identifier | Keywords | StringLiteral)+)) HaveStatement* ( newline+ | eof ) } WhenStatement { - kw<"When"> kw<"I"> (Identifier | Keywords | StringLiteral)+ (kw<"I"> (Identifier | Keywords | StringLiteral)+)* + kw<"When"> kw<"I"> (Identifier | Keywords | StringLiteral)+ (newline kw<"and"> kw<"I"> (Identifier | Keywords | StringLiteral)+)* (newline+ | eof) } IfEndifStatement{ - Condition+ ( GivenStatement | WhenStatement | ThenStatement | ThenPrint)* kw<"EndIf"> + Condition+ ( GivenStatement | WhenStatement | ThenStatement | ThenPrint)* kw<"EndIf"> ( newline+ | eof ) } Condition { - kw<"If"> kw<"I"> kw<"verify"> (Identifier | Keywords | StringLiteral)+ + kw<"If"> kw<"I"> kw<"verify"> (Identifier | Keywords | StringLiteral)+ ( newline+ | eof ) } ForEachStatement { - kw<"Foreach"> (StringLiteral | Identifier | Keywords) (kw<"in"> | kw<"inside">) (StringLiteral | Identifier | Keywords)+ (GivenStatement | WhenStatement | ThenStatement | ThenPrint)* - kw<"EndForeach"> + kw<"Foreach"> (StringLiteral | Identifier | Keywords) (kw<"in"> | kw<"inside">) (StringLiteral | Identifier | Keywords)+ newline+ (GivenStatement | WhenStatement | ThenStatement | ThenPrint)* + kw<"EndForeach"> ( newline+ | eof ) } // ===== Plugin-Specific Statements ===== @@ -425,15 +433,18 @@ Keywords { kw<"redis"> | kw<"delete"> | kw<"shell"> | kw<"fetch"> | kw<"local"> | kw<"timestamp"> | kw<"milliseconds"> | kw<"seconds"> | kw<"vc"> | kw<"sd"> | kw<"jwt"> | kw<"p-256"> | kw<"public"> | - kw<"pretty"> | kw<"print"> | kw<"zencode"> | kw<"output"> | kw<"is"> + kw<"pretty"> | kw<"print"> | kw<"zencode"> | kw<"output"> | kw<"is"> | + kw<"Given"> | kw<"Then"> | kw<"When"> | kw<"Rule"> | kw<"Scenario"> | kw<"If"> | kw<"EndIf"> | kw<"Foreach"> | kw<"EndForeach"> | kw<"I"> } @tokens { space { " " | "\t" } newline { "\n" | "\r\n" } - Comment { "#" (![\n])* } + comment { "#" (![\n])*} StringLiteral { "'" (![\\\n'] | "\\" _)* "'" } symbols { $[a-zA-Z_] | "_" } Identifier { symbols+ Number* } Number { $[0-9]+ } } + +@external tokens token from "./tokens.js" { eof } diff --git a/grammar/src/syntax.grammar.terms.d.ts b/grammar/src/syntax.grammar.terms.d.ts new file mode 100644 index 00000000..fcbffb47 --- /dev/null +++ b/grammar/src/syntax.grammar.terms.d.ts @@ -0,0 +1 @@ +export const eof: number diff --git a/grammar/src/tokens.js b/grammar/src/tokens.js new file mode 100644 index 00000000..7adbf56d --- /dev/null +++ b/grammar/src/tokens.js @@ -0,0 +1,11 @@ +import {ExternalTokenizer} from "@lezer/lr" +import { eof } from "./syntax.grammar.terms" + +export const token = new ExternalTokenizer( + (input) => { + if (input.next < 0) { + input.acceptToken(eof); + } + }, + { contextual: true, fallback: true } + ); diff --git a/grammar/test/cases.txt b/grammar/test/cases.txt index 6fb87542..aa27744e 100644 --- a/grammar/test/cases.txt +++ b/grammar/test/cases.txt @@ -52,27 +52,21 @@ Then I connect to 'ethereum' and send transaction 'signed_ethereum_transaction' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), - ScenarioStatement(Scenario,StringLiteral,Identifier,Identifier,Keywords(object),Identifier,Identifier), +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,ScenarioComment(Identifier,Identifier,Keywords(object),Identifier,Identifier)), SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumSend(send,address,StringLiteral,and,EthereumAction(read,the,ethereum,nonce))),and,SaveAction(output,into,StringLiteral)))), - SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumAction(read,the,suggested,gas,price)),and,SaveAction(output,into,StringLiteral)))), - Comment, - SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)), + SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumAction(read,the,suggested,gas,price)),and,SaveAction(output,into,StringLiteral)))),Comment, SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)), - Comment, - SlangroomStatement(GivenHaveStatement(Given,I,have,the,StringLiteral)), - Comment, + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)),Comment, + SlangroomStatement(GivenHaveStatement(Given,I,have,the,StringLiteral)),Comment, SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), - SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)), - Comment, + SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)),Comment, SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Keywords(ethereum),Keywords(transaction),Keywords(to),StringLiteral)), SlangroomStatement(WhenStatement(When,I,Identifier,Keywords(the),Keywords(ethereum),Keywords(transaction),Keywords(to),Keywords(store),StringLiteral)), SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(ethereum),Keywords(transaction),Identifier,Identifier,StringLiteral)), SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), SlangroomStatement(ThenStatement(Then,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumSend(send,transaction,StringLiteral,and,EthereumAction(read,the,ethereum,transaction,id,after,broadcast))),and,SaveAction(output,into,StringLiteral))))) - #Fs example Rule unknown ignore @@ -170,7 +164,7 @@ Then I send request 'request' and send server_data 'server_data' and generate ac ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,Keywords(url),Identifier), +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,ScenarioComment(Keywords(url),Identifier)), SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(get),Keywords(parameters),Keywords(from),StringLiteral,Identifier,Identifier,Identifier)), SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), @@ -319,7 +313,7 @@ Then I send request 'request' and send server_data 'server' and verify request p ==> -Statement(ScenarioStatement(Scenario,StringLiteral),ScenarioStatement(Scenario,StringLiteral,Keywords(create),Keywords(jwk)),RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), +Statement(ScenarioStatement(Scenario,StringLiteral),ScenarioStatement(Scenario,StringLiteral,ScenarioComment(Keywords(create),Keywords(jwk))),RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), @@ -689,10 +683,10 @@ Statement(RuleStatement(Rule,GenericRule(Keywords(output),Identifier,Identifier) SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), SlangroomStatement(GivenName(Given,I,my,name,is,Keywords(in),Keywords(a),StringLiteral,Keywords(named),StringLiteral,HaveStatement(and,I,have,a,StringLiteral,named,StringLiteral),HaveStatement(and,I,have,a,StringLiteral,in,StringLiteral),HaveStatement(and,I,have,a,StringLiteral,named,StringLiteral))), - SlangroomStatement(IfEndifStatement(Condition(If,I,verify,StringLiteral,Keywords(is),Identifier,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral,Keywords(and),I,Identifier,StringLiteral,Keywords(to),StringLiteral),EndIf)), + SlangroomStatement(IfEndifStatement(Condition(If,I,verify,StringLiteral,Keywords(is),Identifier,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier,Keywords(from),Keywords(path),StringLiteral,and,I,Identifier,StringLiteral,Keywords(to),StringLiteral),EndIf)), SlangroomStatement(IfEndifStatement(Condition(If,I,verify,StringLiteral,Keywords(is),Keywords(not),Identifier,Keywords(in),StringLiteral),WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral),EndIf)), - SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Keywords(ethereum),Keywords(address),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),Keywords(and),I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key))), - SlangroomStatement(ThenPrint(Then,I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(as),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(my),Keywords(name),Keywords(in),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral,Keywords(and),I,print,Keywords(the),StringLiteral)),Comment,Comment, + SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),and,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),and,I,Keywords(create),Keywords(the),Keywords(ethereum),Keywords(address),and,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),and,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),and,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),and,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),and,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key),and,I,Keywords(create),Keywords(the),Identifier,Keywords(public),Keywords(key))), + SlangroomStatement(ThenPrint(Then,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral,Keywords(as),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(my),Keywords(name),Keywords(in),StringLiteral,and,I,print,Keywords(the),StringLiteral,and,I,print,Keywords(the),StringLiteral)),Comment,Comment, SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), SlangroomStatement(ThenStatement(Then,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersSend(send,value,StringLiteral,and,HelpersAction(manipulate,and,set))))))), @@ -737,7 +731,7 @@ Scenario eddsa: verify presentation ==> -Statement(ScenarioStatement(Scenario,Identifier,Keywords(verify),Identifier),Comment) +Statement(ScenarioStatement(Scenario,Identifier,ScenarioComment(Keywords(verify),Identifier)),Comment) #Foreach script From 1361454a23d1e22a36275afb5a6f5f9b25f80df6 Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Thu, 5 Sep 2024 15:38:56 +0200 Subject: [PATCH 08/10] fix: errors wrong colors --- grammar/src/index.ts | 5 ++--- grammar/src/syntax.grammar | 5 ++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/grammar/src/index.ts b/grammar/src/index.ts index 416e258c..a7159dae 100644 --- a/grammar/src/index.ts +++ b/grammar/src/index.ts @@ -27,9 +27,8 @@ export const SlangroomLanguage = LRLanguage.define({ styleTags({ "Given Then When and in inside If EndIf Foreach EndForeach" : t.variableName, "have send open connect print output" : t.keyword, - "RuleStatement!": t.heading, - "ScenarioStatement/...": t.heading1, - "ScenarioComment!": t.heading1, + "Rule VersionRule! UnknownIgnoreRule! GenericRule!": t.heading, + " Scenario ScenarioType/... ScenarioComment!": t.heading1, "DbAction! EthereumAction! FsAction! GitAction! HelpersAction! HttpAction! JsonSchemaAction! OAuthAction! PocketbaseAction! QrCodeAction! RedisAction! ShellAction! TimestampAction! WalletAction! ZencodeAction!": t.heading2, StringLiteral: t.string, Comment: t.lineComment, diff --git a/grammar/src/syntax.grammar b/grammar/src/syntax.grammar index 052d5a25..bd7f7c08 100644 --- a/grammar/src/syntax.grammar +++ b/grammar/src/syntax.grammar @@ -19,7 +19,10 @@ RuleStatement { } ScenarioStatement { - kw<"Scenario"> (StringLiteral| Identifier | Keywords) ScenarioComment? ( newline+ | eof ) + kw<"Scenario"> ScenarioType ScenarioComment? ( newline+ | eof ) +} +ScenarioType { + (StringLiteral| Identifier | Keywords) } ScenarioComment { ":" (Identifier | Keywords | StringLiteral)* From f5ba9fdef2f1cbddd78c98139eb4c51661d8732c Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Fri, 6 Sep 2024 09:11:04 +0200 Subject: [PATCH 09/10] fix:update test cases --- grammar/test/cases.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/grammar/test/cases.txt b/grammar/test/cases.txt index aa27744e..85822463 100644 --- a/grammar/test/cases.txt +++ b/grammar/test/cases.txt @@ -52,7 +52,7 @@ Then I connect to 'ethereum' and send transaction 'signed_ethereum_transaction' ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,ScenarioComment(Identifier,Identifier,Keywords(object),Identifier,Identifier)), +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,ScenarioType(StringLiteral),ScenarioComment(Identifier,Identifier,Keywords(object),Identifier,Identifier)), SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumSend(send,address,StringLiteral,and,EthereumAction(read,the,ethereum,nonce))),and,SaveAction(output,into,StringLiteral)))), SlangroomStatement(GivenStatement(Given,I,EthereumStatement(EthereumConnectAction(connect,to,StringLiteral,and,EthereumAction(read,the,suggested,gas,price)),and,SaveAction(output,into,StringLiteral)))),Comment, SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral)), @@ -164,7 +164,7 @@ Then I send request 'request' and send server_data 'server_data' and generate ac ==> -Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,StringLiteral,ScenarioComment(Keywords(url),Identifier)), +Statement(RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)),ScenarioStatement(Scenario,ScenarioType(StringLiteral),ScenarioComment(Keywords(url),Identifier)) SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)),SlangroomStatement(GivenHaveStatement(Given,I,have,a,StringLiteral,named,StringLiteral)), SlangroomStatement(WhenStatement(When,I,Keywords(create),Keywords(the),Identifier,Keywords(get),Keywords(parameters),Keywords(from),StringLiteral,Identifier,Identifier,Identifier)), SlangroomStatement(WhenStatement(When,I,Identifier,StringLiteral,Keywords(to),StringLiteral,Keywords(in),StringLiteral)),SlangroomStatement(ThenPrint(Then,print,Keywords(the),StringLiteral)), @@ -313,7 +313,7 @@ Then I send request 'request' and send server_data 'server' and verify request p ==> -Statement(ScenarioStatement(Scenario,StringLiteral),ScenarioStatement(Scenario,StringLiteral,ScenarioComment(Keywords(create),Keywords(jwk))),RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), +Statement(ScenarioStatement(Scenario,ScenarioType(StringLiteral)),ScenarioStatement(Scenario,ScenarioType(StringLiteral),ScenarioComment(Keywords(create),Keywords(jwk))),RuleStatement(Rule,UnknownIgnoreRule(unknown,ignore)), SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,file,content))),and,SaveAction(output,into,StringLiteral)))), SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), SlangroomStatement(GivenStatement(Given,I,HelpersStatement(HelpersSend(send,object,StringLiteral,and,HelpersSend(send,path,StringLiteral,and,HelpersAction(manipulate,and,get))),and,SaveAction(output,into,StringLiteral)))), @@ -672,8 +672,9 @@ Then I manipulate and delete and output into 'secrets' ==> -Statement(RuleStatement(Rule,GenericRule(Keywords(output),Identifier,Identifier)),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Keywords(ethereum)), - ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),ScenarioStatement(Scenario,Identifier),Comment, +Statement(RuleStatement(Rule,GenericRule(Keywords(output),Identifier,Identifier)),ScenarioStatement(Scenario,ScenarioType(Identifier)),ScenarioStatement(Scenario,ScenarioType(Identifier)), + ScenarioStatement(Scenario,ScenarioType(Keywords(ethereum))),ScenarioStatement(Scenario,ScenarioType(Identifier)),ScenarioStatement(Scenario,ScenarioType(Identifier)),ScenarioStatement(Scenario,ScenarioType(Identifier)), + ScenarioStatement(Scenario,ScenarioType(Identifier)),ScenarioStatement(Scenario,ScenarioType(Identifier)),Comment, SlangroomStatement(GivenStatement(Given,I,ShellStatement(ShellSend(send,command,StringLiteral,and,ShellAction(execute,in,shell)),and,SaveAction(output,into,StringLiteral)))), SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(verify,file,does,not,exist)))))),Comment, SlangroomStatement(GivenStatement(Given,I,FsStatement(FsConnectAction(FsSend(send,path,StringLiteral,and,FsAction(read,verbatim,file,content))),and,SaveAction(output,into,StringLiteral)))), @@ -731,7 +732,7 @@ Scenario eddsa: verify presentation ==> -Statement(ScenarioStatement(Scenario,Identifier,ScenarioComment(Keywords(verify),Identifier)),Comment) +Statement(ScenarioStatement(Scenario,ScenarioType(Identifier),ScenarioComment(Keywords(verify),Identifier)),Comment) #Foreach script From d3ac674f3fa4b278c90a8dddc7978425f82959bf Mon Sep 17 00:00:00 2001 From: FilippoTrotter Date: Fri, 6 Sep 2024 10:21:30 +0200 Subject: [PATCH 10/10] fix:add missing licenses --- grammar/src/syntax.grammar.terms.d.ts | 4 ++++ grammar/src/tokens.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/grammar/src/syntax.grammar.terms.d.ts b/grammar/src/syntax.grammar.terms.d.ts index fcbffb47..6b4aa902 100644 --- a/grammar/src/syntax.grammar.terms.d.ts +++ b/grammar/src/syntax.grammar.terms.d.ts @@ -1 +1,5 @@ +// SPDX-FileCopyrightText: 2024 Dyne.org foundation +// +// SPDX-License-Identifier: AGPL-3.0-or-later + export const eof: number diff --git a/grammar/src/tokens.js b/grammar/src/tokens.js index 7adbf56d..b0004332 100644 --- a/grammar/src/tokens.js +++ b/grammar/src/tokens.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2024 Dyne.org foundation +// +// SPDX-License-Identifier: AGPL-3.0-or-later + import {ExternalTokenizer} from "@lezer/lr" import { eof } from "./syntax.grammar.terms"