Skip to content

Commit

Permalink
Step Functions: ASL Grammars Enhancements (#10372)
Browse files Browse the repository at this point in the history
  • Loading branch information
MEPalma committed Mar 27, 2024
1 parent e7a89a2 commit 6ecbf0b
Show file tree
Hide file tree
Showing 14 changed files with 1,510 additions and 1,608 deletions.
113 changes: 44 additions & 69 deletions localstack/services/stepfunctions/asl/antlr/ASLIntrinsicLexer.g4
@@ -1,84 +1,59 @@
lexer grammar ASLIntrinsicLexer;
// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false
// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine
// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true

lexer grammar ASLIntrinsicLexer;

CONTEXT_PATH_STRING
: DOLLAR DOLLAR JSON_PATH_BODY
;
CONTEXT_PATH_STRING: DOLLAR DOLLAR JSON_PATH_BODY;

JSON_PATH_STRING
: DOLLAR JSON_PATH_BODY
;
JSON_PATH_STRING: DOLLAR JSON_PATH_BODY;

fragment JSON_PATH_BODY
: JSON_PATH_BRACK? (DOT IDENTIFIER? JSON_PATH_BRACK?)*
;
fragment JSON_PATH_BODY: JSON_PATH_BRACK? (DOT IDENTIFIER? JSON_PATH_BRACK?)*;

fragment JSON_PATH_BRACK
: '[' (JSON_PATH_BRACK | ~[\]])* ']'
;
fragment JSON_PATH_BRACK: '[' (JSON_PATH_BRACK | ~[\]])* ']';

DOLLAR: '$';
LPAREN: '(';
RPAREN: ')';
COMMA: ',';
DOT: '.';
DOLLAR : '$';
LPAREN : '(';
RPAREN : ')';
COMMA : ',';
DOT : '.';

TRUE: 'true';
FALSE: 'false';
TRUE : 'true';
FALSE : 'false';

States: 'States';
Format: 'Format';
StringToJson: 'StringToJson';
JsonToString: 'JsonToString';
Array: 'Array';
ArrayPartition: 'ArrayPartition';
ArrayContains: 'ArrayContains';
ArrayRange: 'ArrayRange';
ArrayGetItem: 'ArrayGetItem';
ArrayLength: 'ArrayLength';
ArrayUnique: 'ArrayUnique';
Base64Encode: 'Base64Encode';
Base64Decode: 'Base64Decode';
Hash: 'Hash';
JsonMerge: 'JsonMerge';
MathRandom: 'MathRandom';
MathAdd: 'MathAdd';
StringSplit: 'StringSplit';
UUID: 'UUID';
States : 'States';
Format : 'Format';
StringToJson : 'StringToJson';
JsonToString : 'JsonToString';
Array : 'Array';
ArrayPartition : 'ArrayPartition';
ArrayContains : 'ArrayContains';
ArrayRange : 'ArrayRange';
ArrayGetItem : 'ArrayGetItem';
ArrayLength : 'ArrayLength';
ArrayUnique : 'ArrayUnique';
Base64Encode : 'Base64Encode';
Base64Decode : 'Base64Decode';
Hash : 'Hash';
JsonMerge : 'JsonMerge';
MathRandom : 'MathRandom';
MathAdd : 'MathAdd';
StringSplit : 'StringSplit';
UUID : 'UUID';

STRING
: '\'' (ESC | SAFECODEPOINT)*? '\''
;
STRING: '\'' (ESC | SAFECODEPOINT)*? '\'';

fragment ESC
: '\\' (UNICODE | .)
;
fragment UNICODE
: 'u' HEX HEX HEX HEX
;
fragment HEX
: [0-9a-fA-F]
;
fragment SAFECODEPOINT
: ~ ['\\\u0000-\u001F]
;
fragment ESC : '\\' (UNICODE | .);
fragment UNICODE : 'u' HEX HEX HEX HEX;
fragment HEX : [0-9a-fA-F];
fragment SAFECODEPOINT : ~ ['\\\u0000-\u001F];
INT
: '-'? ('0' | [1-9] [0-9]*)
;
INT: '-'? ('0' | [1-9] [0-9]*);
NUMBER
: '-'? INT ('.' [0-9] +)? EXP?
;
NUMBER: '-'? INT ('.' [0-9]+)? EXP?;
fragment EXP
: [Ee] [+\-]? INT
;
fragment EXP: [Ee] [+\-]? INT;
IDENTIFIER
: ([0-9a-zA-Z_] | UNICODE)+
;
IDENTIFIER: ([0-9a-zA-Z_] | UNICODE)+;
WS
: [ \t\n] + -> skip
;
WS: [ \t\n]+ -> skip;
43 changes: 20 additions & 23 deletions localstack/services/stepfunctions/asl/antlr/ASLIntrinsicParser.g4
@@ -1,19 +1,19 @@
// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false
// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine
// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true

parser grammar ASLIntrinsicParser;

options {
tokenVocab=ASLIntrinsicLexer;
tokenVocab = ASLIntrinsicLexer;
}

func_decl
: states_func_decl
;
func_decl: states_func_decl EOF;

states_func_decl
: States DOT state_fun_name func_arg_list
;
states_func_decl: States DOT state_fun_name func_arg_list;

state_fun_name
: Format
state_fun_name:
Format
| StringToJson
| JsonToString
| Array
Expand All @@ -31,19 +31,16 @@ state_fun_name
| MathAdd
| StringSplit
| UUID
;
;

func_arg_list
: LPAREN func_arg (COMMA func_arg)* RPAREN
| LPAREN RPAREN
;
func_arg_list: LPAREN func_arg (COMMA func_arg)* RPAREN | LPAREN RPAREN;

func_arg
: STRING #func_arg_string
| INT #func_arg_int
| NUMBER #func_arg_float
| (TRUE | FALSE) #func_arg_bool
| CONTEXT_PATH_STRING #func_arg_context_path
| JSON_PATH_STRING #func_arg_json_path
| func_decl #func_arg_func_decl
;
func_arg:
STRING # func_arg_string
| INT # func_arg_int
| NUMBER # func_arg_float
| (TRUE | FALSE) # func_arg_bool
| CONTEXT_PATH_STRING # func_arg_context_path
| JSON_PATH_STRING # func_arg_json_path
| states_func_decl # func_arg_func_decl
;

0 comments on commit 6ecbf0b

Please sign in to comment.