diff --git a/go/build b/go/build index 71872b123..e4959befc 100755 --- a/go/build +++ b/go/build @@ -1,4 +1,5 @@ #!/bin/bash export GOPATH=$(pwd) +./build-dsl go build mlr.go diff --git a/go/build-dsl b/go/build-dsl index 9ef6ba458..e0588f224 100755 --- a/go/build-dsl +++ b/go/build-dsl @@ -1,5 +1,7 @@ #!/bin/bash +set -euo pipefail + export GOPATH=$(pwd) # Build the bin/gocc executable: @@ -13,6 +15,3 @@ bin/gocc -o src/miller/parsing src/miller/parsing/mlr.bnf # src/miller/parsing/parser/ # src/miller/parsing/token/ # src/miller/parsing/util/ - -# Run tests: -go test -v src/miller/dsl/ast_test.go diff --git a/go/mlr.go b/go/mlr.go index 64ad30654..31443ee65 100644 --- a/go/mlr.go +++ b/go/mlr.go @@ -10,6 +10,10 @@ import ( "runtime/pprof" // Miller: "miller/stream" + // Temp: + "miller/dsl" + "miller/parsing/lexer" + "miller/parsing/parser" ) // ---------------------------------------------------------------- @@ -35,6 +39,11 @@ func main() { args := flag.Args() + // xxx temp + if len(args) == 2 && args[0] == "parse" { + parse(args[1]) + return + } if len(args) < 3 { usage() @@ -50,6 +59,21 @@ func main() { } } +// ---------------------------------------------------------------- +// xxx temp +func parse(sourceString string) { + fmt.Printf("Input: %s\n", sourceString) + theLexer := lexer.NewLexer([]byte(sourceString)) + theParser := parser.NewParser() + interfaceAST, err := theParser.Parse(theLexer) + if err == nil { + interfaceAST.(*dsl.AST).Print() + } else { + fmt.Println(err) + os.Exit(1) + } +} + // ---------------------------------------------------------------- func maybeProfile(cpuprofile *string) { // to do: move to method diff --git a/go/src/miller/dsl/ast.go b/go/src/miller/dsl/ast.go index a37f7e1fb..cfbec1e15 100644 --- a/go/src/miller/dsl/ast.go +++ b/go/src/miller/dsl/ast.go @@ -10,7 +10,7 @@ type TNodeType string const ( NodeTypeStatementBlock = "StatementBlock" NodeTypeStatement = "Statement" - NodeTypeLeaf = "Leaf" // xxx temp + NodeTypeToken = "Token" ) // ---------------------------------------------------------------- @@ -89,11 +89,11 @@ func NewASTNodeUnary(childA interface{}, nodeType TNodeType) (*ASTNode, error) { return parent, nil } -//// xxx temp -//func Wrap(iparent interface{}) (*ASTNode, error) { -// parent := iparent.(*ASTNode) -// return parent, nil -//} +// Pass-through expressions in the grammar sometimes need to be turned from +// (ASTNode) to (ASTNode, error) +func PairNil(iparent interface{}) (*ASTNode, error) { + return iparent.(*ASTNode), nil +} func MakeZary(iparent interface{}) (*ASTNode, error) { parent := iparent.(*ASTNode) diff --git a/go/src/miller/dsl/ast_test.go b/go/src/miller/dsl/ast_test.go index 7580eea9b..b615329bf 100644 --- a/go/src/miller/dsl/ast_test.go +++ b/go/src/miller/dsl/ast_test.go @@ -40,7 +40,16 @@ func TestPassOne(t *testing.T) { } func TestPassTwo(t *testing.T) { - ast, err := testSingle([]byte("$x = 3; $y = 4")) + ast, err := testSingle([]byte("$x = 3; $y = 0xef")) + if err != nil { + t.Fatal(err.Error()) + } + fmt.Println("AST:") + ast.Print() +} + +func TestPassThree(t *testing.T) { + ast, err := testSingle([]byte("$x = 3; $y = 0xef; $z = true")) if err != nil { t.Fatal(err.Error()) } diff --git a/go/src/miller/parsing/lexer/acttab.go b/go/src/miller/parsing/lexer/acttab.go index d34bf919e..c43b4ebcd 100644 --- a/go/src/miller/parsing/lexer/acttab.go +++ b/go/src/miller/parsing/lexer/acttab.go @@ -41,27 +41,75 @@ var ActTab = ActionTable{ Ignore: "", }, ActionRow{ // S5 - Accept: 2, - Ignore: "", - }, - ActionRow{ // S6 - Accept: 4, - Ignore: "", - }, - ActionRow{ // S7 - Accept: 3, - Ignore: "", - }, - ActionRow{ // S8 - Accept: 3, - Ignore: "", - }, - ActionRow{ // S9 - Accept: 3, - Ignore: "", - }, - ActionRow{ // S10 Accept: 5, Ignore: "", }, + ActionRow{ // S6 + Accept: 2, + Ignore: "", + }, + ActionRow{ // S7 + Accept: 4, + Ignore: "", + }, + ActionRow{ // S8 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S9 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S10 + Accept: 3, + Ignore: "", + }, + ActionRow{ // S11 + Accept: 3, + Ignore: "", + }, + ActionRow{ // S12 + Accept: 3, + Ignore: "", + }, + ActionRow{ // S13 + Accept: 5, + Ignore: "", + }, + ActionRow{ // S14 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S15 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S16 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S17 + Accept: 5, + Ignore: "", + }, + ActionRow{ // S18 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S19 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S20 + Accept: 0, + Ignore: "", + }, + ActionRow{ // S21 + Accept: 6, + Ignore: "", + }, + ActionRow{ // S22 + Accept: 7, + Ignore: "", + }, } diff --git a/go/src/miller/parsing/lexer/lexer.go b/go/src/miller/parsing/lexer/lexer.go index b2d661883..c534d5195 100644 --- a/go/src/miller/parsing/lexer/lexer.go +++ b/go/src/miller/parsing/lexer/lexer.go @@ -11,8 +11,8 @@ import ( const ( NoState = -1 - NumStates = 11 - NumSymbols = 13 + NumStates = 23 + NumSymbols = 27 ) type Lexer struct { @@ -116,14 +116,28 @@ Lexer symbols: 0: '$' 1: '=' 2: '-' -3: ';' -4: '_' -5: ' ' -6: '\t' -7: '\n' -8: '\r' -9: 'a'-'z' -10: 'A'-'Z' -11: '0'-'9' -12: . +3: '0' +4: 'x' +5: ';' +6: 't' +7: 'r' +8: 'u' +9: 'e' +10: 'f' +11: 'a' +12: 'l' +13: 's' +14: 'e' +15: '_' +16: ' ' +17: '\t' +18: '\n' +19: '\r' +20: 'a'-'z' +21: 'A'-'Z' +22: '0'-'9' +23: '0'-'9' +24: 'a'-'f' +25: 'A'-'F' +26: . */ diff --git a/go/src/miller/parsing/lexer/transitiontable.go b/go/src/miller/parsing/lexer/transitiontable.go index 3506d594a..b6ef8f504 100644 --- a/go/src/miller/parsing/lexer/transitiontable.go +++ b/go/src/miller/parsing/lexer/transitiontable.go @@ -25,12 +25,18 @@ var TransTab = TransitionTable{ return 2 case r == 45: // ['-','-'] return 3 - case 48 <= r && r <= 57: // ['0','9'] + case r == 48: // ['0','0'] return 4 - case r == 59: // [';',';'] + case 49 <= r && r <= 57: // ['1','9'] return 5 - case r == 61: // ['=','='] + case r == 59: // [';',';'] return 6 + case r == 61: // ['=','='] + return 7 + case r == 102: // ['f','f'] + return 8 + case r == 116: // ['t','t'] + return 9 } return NoState }, @@ -44,13 +50,13 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 7 + return 10 case 65 <= r && r <= 90: // ['A','Z'] - return 8 + return 11 case r == 95: // ['_','_'] - return 9 + return 12 case 97 <= r && r <= 122: // ['a','z'] - return 8 + return 11 } return NoState }, @@ -58,7 +64,7 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 10 + return 13 } return NoState }, @@ -66,13 +72,17 @@ var TransTab = TransitionTable{ func(r rune) int { switch { case 48 <= r && r <= 57: // ['0','9'] - return 4 + return 5 + case r == 120: // ['x','x'] + return 14 } return NoState }, // S5 func(r rune) int { switch { + case 48 <= r && r <= 57: // ['0','9'] + return 5 } return NoState }, @@ -85,42 +95,22 @@ var TransTab = TransitionTable{ // S7 func(r rune) int { switch { - case 48 <= r && r <= 57: // ['0','9'] - return 7 - case 65 <= r && r <= 90: // ['A','Z'] - return 8 - case r == 95: // ['_','_'] - return 9 - case 97 <= r && r <= 122: // ['a','z'] - return 8 } return NoState }, // S8 func(r rune) int { switch { - case 48 <= r && r <= 57: // ['0','9'] - return 7 - case 65 <= r && r <= 90: // ['A','Z'] - return 8 - case r == 95: // ['_','_'] - return 9 - case 97 <= r && r <= 122: // ['a','z'] - return 8 + case r == 97: // ['a','a'] + return 15 } return NoState }, // S9 func(r rune) int { switch { - case 48 <= r && r <= 57: // ['0','9'] - return 7 - case 65 <= r && r <= 90: // ['A','Z'] - return 8 - case r == 95: // ['_','_'] - return 9 - case 97 <= r && r <= 122: // ['a','z'] - return 8 + case r == 114: // ['r','r'] + return 16 } return NoState }, @@ -129,6 +119,124 @@ var TransTab = TransitionTable{ switch { case 48 <= r && r <= 57: // ['0','9'] return 10 + case 65 <= r && r <= 90: // ['A','Z'] + return 11 + case r == 95: // ['_','_'] + return 12 + case 97 <= r && r <= 122: // ['a','z'] + return 11 + } + return NoState + }, + // S11 + func(r rune) int { + switch { + case 48 <= r && r <= 57: // ['0','9'] + return 10 + case 65 <= r && r <= 90: // ['A','Z'] + return 11 + case r == 95: // ['_','_'] + return 12 + case 97 <= r && r <= 122: // ['a','z'] + return 11 + } + return NoState + }, + // S12 + func(r rune) int { + switch { + case 48 <= r && r <= 57: // ['0','9'] + return 10 + case 65 <= r && r <= 90: // ['A','Z'] + return 11 + case r == 95: // ['_','_'] + return 12 + case 97 <= r && r <= 122: // ['a','z'] + return 11 + } + return NoState + }, + // S13 + func(r rune) int { + switch { + case 48 <= r && r <= 57: // ['0','9'] + return 13 + } + return NoState + }, + // S14 + func(r rune) int { + switch { + case 48 <= r && r <= 57: // ['0','9'] + return 17 + case 65 <= r && r <= 70: // ['A','F'] + return 17 + case 97 <= r && r <= 102: // ['a','f'] + return 17 + } + return NoState + }, + // S15 + func(r rune) int { + switch { + case r == 108: // ['l','l'] + return 18 + } + return NoState + }, + // S16 + func(r rune) int { + switch { + case r == 117: // ['u','u'] + return 19 + } + return NoState + }, + // S17 + func(r rune) int { + switch { + case 48 <= r && r <= 57: // ['0','9'] + return 17 + case 65 <= r && r <= 70: // ['A','F'] + return 17 + case 97 <= r && r <= 102: // ['a','f'] + return 17 + } + return NoState + }, + // S18 + func(r rune) int { + switch { + case r == 115: // ['s','s'] + return 20 + } + return NoState + }, + // S19 + func(r rune) int { + switch { + case r == 101: // ['e','e'] + return 21 + } + return NoState + }, + // S20 + func(r rune) int { + switch { + case r == 101: // ['e','e'] + return 22 + } + return NoState + }, + // S21 + func(r rune) int { + switch { + } + return NoState + }, + // S22 + func(r rune) int { + switch { } return NoState }, diff --git a/go/src/miller/parsing/mlr.bnf b/go/src/miller/parsing/mlr.bnf index 4280397b4..141808081 100644 --- a/go/src/miller/parsing/mlr.bnf +++ b/go/src/miller/parsing/mlr.bnf @@ -3,34 +3,24 @@ // ================================================================ _letter : 'a'-'z' | 'A'-'Z' ; -_digit : '0'-'9' ; -_idchar : _letter | _digit | '_' ; +_decimalDigit : '0'-'9' ; +_hexDigit : '0'-'9' | 'a'-'f' | 'A'-'F'; +_idchar : _letter | _decimalDigit | '_' ; !whitespace : ' ' | '\t' | '\n' | '\r' ; md_token_field_name : '$' _idchar { _idchar } ; md_token_assign : '=' ; -md_token_number : _digit { _digit } | '-' _digit { _digit } ; -md_semicolon : ';' ; +md_token_number + : _decimalDigit { _decimalDigit } + | '-' _decimalDigit { _decimalDigit } + | '0' 'x' _hexDigit { _hexDigit } +; -//// NOTE: any new keywords defined here should also be documented -//// in dsl/mlr_dsl_cst.c's mlr_dsl_keyword_usage() et al. -//%} +// xxx want 'true' and 'false' defined in the grammar after all -- they are keywords. -//%% - -//";" { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY); -// return MD_TOKEN_SEMICOLON; -//} -//"{" { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY); -// return MD_TOKEN_LBRACE; -//} -//"}" { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY); -// return MD_TOKEN_RBRACE; -//} +// NOTE: any new keywords defined here should also be documented +/// in dsl/mlr_dsl_cst.c's mlr_dsl_keyword_usage() et al. //"=" { // *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_SREC_ASSIGNMENT); @@ -500,15 +490,6 @@ md_semicolon : ';' ; // return MD_TOKEN_STRING; //} -//"true" { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_BOOLEAN_LITERAL); -// return MD_TOKEN_TRUE; -//} -//"false" { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_BOOLEAN_LITERAL); -// return MD_TOKEN_FALSE; -//} - //"IPS" { // *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE); // return MD_TOKEN_CONTEXT_VARIABLE; @@ -572,61 +553,38 @@ md_semicolon : ';' ; // return MD_TOKEN_NON_SIGIL_NAME; //} -//"(" { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY); -// return MD_TOKEN_LPAREN; -//} -//")" { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY); -// return MD_TOKEN_RPAREN; -//} - -//"," { -// *yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY); -// return MD_TOKEN_COMMA; -//} - -//#.*\n { } - -//[ \t\r\n] { } - -//. { -// return -1; -//} -//%% - // ================================================================ // SYNTAX ELEMENTS // ================================================================ // ================================================================ // AST: -// * parens, commas, semis, line endings, whitespace are all stripped away -// * variable names and literal values remain as leaf nodes of the AST +// * Parentheses, commas, semicolons, line endings, whitespace are all stripped away +// * Variable names and literal values remain as leaf nodes of the AST // * = + - * / ** {function names} remain as non-leaf nodes of the AST - +// // CST: See mlr_dsl_cst.c - +// // Note: This parser accepts many things that are invalid, e.g. - // * begin{end{}} -- begin/end not at top level // * begin{$x=1} -- references to stream records at begin/end // * break/continue outside of for/while/do-while // * return outside of a function definition // * $x=x -- boundvars outside of for-loop variable bindings - +// // All of the above are enforced by the CST builder's semantic-analysis logic, -// which takes this parser's output AST as input. This is done (a) to keep this -// grammar from being overly complex, and (b) so we can get much more +// which takes this parser's output AST as input. This is done (a) to keep +// this grammar from being overly complex, and (b) so we can get much more // informative error messages in C than in Lemon ('syntax error'). - -// The parser hooks all build up an abstract syntax tree specifically for the CST builder. -// For clearer visuals on what the ASTs look like: +// +// The parser hooks all build up an abstract syntax tree specifically for the +// CST builder. For clearer visuals on what the ASTs look like: // * See mlr_dsl_cst.c // * See reg_test/run's filter -v and put -v outputs, e.g. in reg_test/expected/out // * Do "mlr -n put -v 'your expression goes here'" // ================================================================ +// Import the AST/ASTNode types and functions << import "miller/dsl" >> //// The caller is expected to provide more context. @@ -647,46 +605,28 @@ md_semicolon : ';' ; //} // ================================================================ -Body : +Root : StatementBlock <> ; StatementBlock : Statement << dsl.NewASTNodeUnary($0, dsl.NodeTypeStatementBlock) >> - | StatementBlock md_semicolon Statement + | StatementBlock ";" + // Semicolons are separators, not terminators, in the Miller DSL -- + // most importantly people can say '$x = 3' without '$x = 3;'. + // However, we do allow trailing semicolons. + << dsl.PairNil($0) >> + | StatementBlock ";" Statement <> ; Statement - : FieldName Assign Number + : FieldName Assign AtomOrFunction << dsl.MakeBinary($1, $0, $2) >> ; -FieldName: md_token_field_name << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; -Assign: md_token_assign << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; -Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; - -// C example: -// $ mlr put -v '$x=3;$y=4' /dev/null -// AST ROOT: -// text="block", type=STATEMENT_BLOCK: -// text="=", type=SREC_ASSIGNMENT: -// text="x", type=FIELD_NAME. -// text="3", type=NUMERIC_LITERAL. -// text="=", type=SREC_ASSIGNMENT: -// text="y", type=FIELD_NAME. -// text="4", type=NUMERIC_LITERAL. - -// Go example (this code): -// Input: '$x = 3; $y = 4' -// AST ROOT: -// * NodeType=StatementBlock -// * NodeType=Leaf TokenType="md_token_assign" Literal="=" -// * NodeType=Leaf TokenType="md_token_field_name" Literal="$x" -// * NodeType=Leaf TokenType="md_token_number" Literal="3" -// * NodeType=Leaf TokenType="md_token_assign" Literal="=" -// * NodeType=Leaf TokenType="md_token_field_name" Literal="$y" -// * NodeType=Leaf TokenType="md_token_number" Literal="4" +FieldName: md_token_field_name << dsl.NewASTNode($0, dsl.NodeTypeToken) >> ; +Assign: md_token_assign << dsl.NewASTNode($0, dsl.NodeTypeToken) >> ; @@ -762,7 +702,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_statement_not_braced_end(A) ::= md_indexed_local_assignment(B). { A = B; } //// For user-defined functions -//md_statement_not_braced_end(A) ::= MD_TOKEN_RETURN md_rhs(B). { +//md_statement_not_braced_end(A) ::= MD_TOKEN_RETURN RHS(B). { // A = mlr_dsl_ast_node_alloc_unary("return_value", MD_AST_NODE_TYPE_RETURN_VALUE, B); //} //md_statement_not_braced_end(A) ::= MD_TOKEN_RETURN md_map_literal(B). { @@ -808,7 +748,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// Not valid in begin/end since they refer to srecs: -//md_statement_not_braced_end(A) ::= md_srec_assignment(B). { A = B; } +// xxx +//md_statement_not_braced_end(A) ::= SrecAssignment(B). { A = B; } //md_statement_not_braced_end(A) ::= md_srec_indirect_assignment(B). { A = B; } //md_statement_not_braced_end(A) ::= md_srec_positional_name_assignment(B). { A = B; } //md_statement_not_braced_end(A) ::= md_srec_positional_value_assignment(B). { A = B; } @@ -882,8 +823,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// * On the "f" we change the function name to get "f(a,b,c)". //md_func_block(C) ::= MD_TOKEN_FUNC_DEF -// MD_TOKEN_NON_SIGIL_NAME(F) MD_TOKEN_LPAREN md_func_or_subr_parameter_list(A) MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE md_statement_block(B) MD_TOKEN_RBRACE. +// MD_TOKEN_NON_SIGIL_NAME(F) "(" md_func_or_subr_parameter_list(A) ")" +// "{" md_statement_block(B) "}". //{ // A = mlr_dsl_ast_node_set_function_name(A, F->text); // mlr_dsl_ast_node_replace_text(B, "func_block"); @@ -891,9 +832,9 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //md_func_block(C) ::= MD_TOKEN_FUNC_DEF -// MD_TOKEN_NON_SIGIL_NAME(F) MD_TOKEN_LPAREN md_func_or_subr_parameter_list(A) MD_TOKEN_RPAREN +// MD_TOKEN_NON_SIGIL_NAME(F) "(" md_func_or_subr_parameter_list(A) ")" // MD_TOKEN_COLON md_typedecl(M) -// MD_TOKEN_LBRACE md_statement_block(B) MD_TOKEN_RBRACE. +// "{" md_statement_block(B) "}". //{ // A = mlr_dsl_ast_node_set_function_name(A, F->text); // mlr_dsl_ast_node_replace_text(B, "func_block"); @@ -901,8 +842,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //md_subr_block(C) ::= MD_TOKEN_SUBR_DEF -// MD_TOKEN_NON_SIGIL_NAME(F) MD_TOKEN_LPAREN md_func_or_subr_parameter_list(A) MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE md_statement_block(B) MD_TOKEN_RBRACE. +// MD_TOKEN_NON_SIGIL_NAME(F) "(" md_func_or_subr_parameter_list(A) ")" +// "{" md_statement_block(B) "}". //{ // A = mlr_dsl_ast_node_set_function_name(A, F->text); // mlr_dsl_ast_node_replace_text(B, "subr_block"); @@ -918,10 +859,10 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_func_or_subr_non_empty_parameter_list(A) ::= md_func_or_subr_parameter(B). { // A = mlr_dsl_ast_node_alloc_unary("anon", MD_AST_NODE_TYPE_NON_SIGIL_NAME, B); //} -//md_func_or_subr_non_empty_parameter_list(A) ::= md_func_or_subr_parameter(B) MD_TOKEN_COMMA. { +//md_func_or_subr_non_empty_parameter_list(A) ::= md_func_or_subr_parameter(B) ",". { // A = mlr_dsl_ast_node_alloc_unary("anon", MD_AST_NODE_TYPE_NON_SIGIL_NAME, B); //} -//md_func_or_subr_non_empty_parameter_list(A) ::= md_func_or_subr_parameter(B) MD_TOKEN_COMMA +//md_func_or_subr_non_empty_parameter_list(A) ::= md_func_or_subr_parameter(B) "," // md_func_or_subr_non_empty_parameter_list(C). //{ // A = mlr_dsl_ast_node_prepend_arg(C, B); @@ -943,17 +884,17 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_typedecl(A) ::= MD_TOKEN_MAP(B). { A = B; A->type = MD_AST_NODE_TYPE_MAP_PARAMETER_DEFINITION; } //// ================================================================ -//md_begin_block(A) ::= MD_TOKEN_BEGIN(O) MD_TOKEN_LBRACE md_statement_block(B) MD_TOKEN_RBRACE. { +//md_begin_block(A) ::= MD_TOKEN_BEGIN(O) "{" md_statement_block(B) "}". { // mlr_dsl_ast_node_replace_text(B, "begin_block"); // A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_BEGIN, B); //} -//md_end_block(A) ::= MD_TOKEN_END(O) MD_TOKEN_LBRACE md_statement_block(B) MD_TOKEN_RBRACE. { +//md_end_block(A) ::= MD_TOKEN_END(O) "{" md_statement_block(B) "}". { // mlr_dsl_ast_node_replace_text(B, "end_block"); // A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_END, B); //} //// ---------------------------------------------------------------- -//md_cond_block(A) ::= md_rhs(B) MD_TOKEN_LBRACE md_statement_block(C) MD_TOKEN_RBRACE. { +//md_cond_block(A) ::= RHS(B) "{" md_statement_block(C) "}". { // mlr_dsl_ast_node_replace_text(C, "cond_block"); // A = mlr_dsl_ast_node_alloc_binary("cond", MD_AST_NODE_TYPE_CONDITIONAL_BLOCK, B, C); //} @@ -961,8 +902,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //md_while_block(A) ::= // MD_TOKEN_WHILE(O) -// MD_TOKEN_LPAREN md_rhs(B) MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE md_statement_block(C) MD_TOKEN_RBRACE. +// "(" RHS(B) ")" +// "{" md_statement_block(C) "}". //{ // mlr_dsl_ast_node_replace_text(C, "while_block"); // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_WHILE, B, C); @@ -971,9 +912,9 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //md_do_while_block(A) ::= // MD_TOKEN_DO(O) -// MD_TOKEN_LBRACE md_statement_block(B) MD_TOKEN_RBRACE +// "{" md_statement_block(B) "}" // MD_TOKEN_WHILE -// MD_TOKEN_LPAREN md_rhs(C) MD_TOKEN_RPAREN. +// "(" RHS(C) ")". //{ // mlr_dsl_ast_node_replace_text(B, "do_while_block"); // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_DO_WHILE, B, C); @@ -982,13 +923,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //// for(k, v in $*) { ... } //md_for_loop_full_srec(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// md_for_loop_index(K) MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// md_for_loop_index(K) "," md_for_loop_index(V) // MD_TOKEN_IN MD_TOKEN_FULL_SREC -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_full_srec_block"); // A = mlr_dsl_ast_node_alloc_binary( @@ -1006,12 +947,12 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for(k in $*) { ... } //md_for_loop_full_srec_key_only(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN +// MD_TOKEN_FOR(F) "(" // md_for_loop_index(K) MD_TOKEN_IN MD_TOKEN_FULL_SREC -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_full_srec_block"); // A = mlr_dsl_ast_node_alloc_binary( @@ -1028,13 +969,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for(k, v in @*) { ... } //md_for_loop_full_oosvar(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// md_for_loop_index(K) MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// md_for_loop_index(K) "," md_for_loop_index(V) // MD_TOKEN_IN MD_TOKEN_FULL_OOSVAR -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_full_oosvar_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1058,13 +999,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for((k1, k2), v in @*) { ... } //// for((k1, k2, k3), v in @*) { ... } //md_for_loop_full_oosvar(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// MD_TOKEN_LPAREN md_for_map_keylist(L) MD_TOKEN_RPAREN MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// "(" md_for_map_keylist(L) ")" "," md_for_loop_index(V) // MD_TOKEN_IN MD_TOKEN_FULL_OOSVAR -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_full_oosvar_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1083,14 +1024,14 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for(k in @*) { ... } //md_for_loop_full_oosvar_key_only(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN +// MD_TOKEN_FOR(F) "(" // md_for_loop_index(K) // MD_TOKEN_IN // MD_TOKEN_FULL_OOSVAR -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_full_oosvar_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1104,13 +1045,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for(k, v in @o[1][2]) { ... } //md_for_loop_oosvar(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// md_for_loop_index(K) MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// md_for_loop_index(K) "," md_for_loop_index(V) // MD_TOKEN_IN md_oosvar_keylist(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_oosvar_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1134,13 +1075,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for((k1, k2), v in @o[1][2]) { ... } //// for((k1, k2, k3), v in @o[1][2]) { ... } //md_for_loop_oosvar(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// MD_TOKEN_LPAREN md_for_map_keylist(L) MD_TOKEN_RPAREN MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// "(" md_for_map_keylist(L) ")" "," md_for_loop_index(V) // MD_TOKEN_IN md_oosvar_keylist(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_oosvar_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1179,19 +1120,19 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_for_map_keylist(A) ::= md_for_loop_index(K). { // A = mlr_dsl_ast_node_alloc_unary("key_variables", MD_AST_NODE_TYPE_FOR_VARIABLES, K); //} -//md_for_map_keylist(A) ::= md_for_map_keylist(L) MD_TOKEN_COMMA md_for_loop_index(K). { +//md_for_map_keylist(A) ::= md_for_map_keylist(L) "," md_for_loop_index(K). { // A = mlr_dsl_ast_node_append_arg(L, K); //} //// for(k in @o[1][2]) { ... } //md_for_loop_oosvar_key_only(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN +// MD_TOKEN_FOR(F) "(" // md_for_loop_index(K) // MD_TOKEN_IN md_oosvar_keylist(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_oosvar_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1206,13 +1147,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //// for(k, v in o[1][2]) { ... } //md_for_loop_local_map(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// md_for_loop_index(K) MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// md_for_loop_index(K) "," md_for_loop_index(V) // MD_TOKEN_IN md_local_map_keylist(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_local_map_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1236,13 +1177,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for((k1, k2), v in o[1][2]) { ... } //// for((k1, k2, k3), v in o[1][2]) { ... } //md_for_loop_local_map(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// MD_TOKEN_LPAREN md_for_map_keylist(L) MD_TOKEN_RPAREN MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// "(" md_for_map_keylist(L) ")" "," md_for_loop_index(V) // MD_TOKEN_IN md_local_map_keylist(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_local_map_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1261,13 +1202,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for(k in o[1][2]) { ... } //md_for_loop_local_map_key_only(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN +// MD_TOKEN_FOR(F) "(" // md_for_loop_index(K) // MD_TOKEN_IN md_local_map_keylist(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_local_map_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1282,13 +1223,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //// for(k, v in o[1][2]) { ... } //md_for_loop_map_literal(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// md_for_loop_index(K) MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// md_for_loop_index(K) "," md_for_loop_index(V) // MD_TOKEN_IN md_map_literal(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_map_literal_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1312,13 +1253,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for((k1, k2), v in o[1][2]) { ... } //// for((k1, k2, k3), v in o[1][2]) { ... } //md_for_loop_map_literal(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// MD_TOKEN_LPAREN md_for_map_keylist(L) MD_TOKEN_RPAREN MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// "(" md_for_map_keylist(L) ")" "," md_for_loop_index(V) // MD_TOKEN_IN md_map_literal(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_map_literal_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1337,13 +1278,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for(k in o[1][2]) { ... } //md_for_loop_map_literal_key_only(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN +// MD_TOKEN_FOR(F) "(" // md_for_loop_index(K) // MD_TOKEN_IN md_map_literal(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_map_literal_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1358,13 +1299,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //// for(k, v in o[1][2]) { ... } //md_for_loop_func_retval(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// md_for_loop_index(K) MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// md_for_loop_index(K) "," md_for_loop_index(V) // MD_TOKEN_IN md_fcn_or_subr_call(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_func_retval_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1388,13 +1329,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for((k1, k2), v in o[1][2]) { ... } //// for((k1, k2, k3), v in o[1][2]) { ... } //md_for_loop_func_retval(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN -// MD_TOKEN_LPAREN md_for_map_keylist(L) MD_TOKEN_RPAREN MD_TOKEN_COMMA md_for_loop_index(V) +// MD_TOKEN_FOR(F) "(" +// "(" md_for_map_keylist(L) ")" "," md_for_loop_index(V) // MD_TOKEN_IN md_fcn_or_subr_call(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_func_retval_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1413,13 +1354,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// for(k in o[1][2]) { ... } //md_for_loop_func_retval_key_only(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN +// MD_TOKEN_FOR(F) "(" // md_for_loop_index(K) // MD_TOKEN_IN md_fcn_or_subr_call(O) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(S) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(S, "for_loop_func_retval_block"); // A = mlr_dsl_ast_node_alloc_ternary( @@ -1433,16 +1374,16 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //md_triple_for(A) ::= -// MD_TOKEN_FOR(F) MD_TOKEN_LPAREN +// MD_TOKEN_FOR(F) "(" // md_triple_for_start(S) // MD_TOKEN_SEMICOLON // md_triple_for_continuation(C) // MD_TOKEN_SEMICOLON // md_triple_for_update(U) -// MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE +// ")" +// "{" // md_statement_block(L) -// MD_TOKEN_RBRACE. +// "}". //{ // mlr_dsl_ast_node_replace_text(L, "triple_for_block"); // A = mlr_dsl_ast_node_alloc_quaternary(F->text, MD_AST_NODE_TYPE_TRIPLE_FOR, S, C, U, L); @@ -1456,7 +1397,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_unary("triple_for_start_statements", MD_AST_NODE_TYPE_STATEMENT_LIST, B); // } //} -//md_triple_for_start(A) ::= md_triple_for_start(B) MD_TOKEN_COMMA md_statement_not_braced_end(C). { +//md_triple_for_start(A) ::= md_triple_for_start(B) "," md_statement_not_braced_end(C). { // if (B->type == MD_AST_NODE_TYPE_NOP) { // mlr_dsl_ast_node_free(B); // A = C; @@ -1473,7 +1414,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_unary("triple_for_continuation_statements", MD_AST_NODE_TYPE_STATEMENT_LIST, B); // } //} -//md_triple_for_continuation(A) ::= md_triple_for_continuation(B) MD_TOKEN_COMMA md_statement_not_braced_end(C). { +//md_triple_for_continuation(A) ::= md_triple_for_continuation(B) "," md_statement_not_braced_end(C). { // if (B->type == MD_AST_NODE_TYPE_NOP) { // mlr_dsl_ast_node_free(B); // A = C; @@ -1490,7 +1431,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_unary("triple_for_update_statements", MD_AST_NODE_TYPE_STATEMENT_LIST, B); // } //} -//md_triple_for_update(A) ::= md_triple_for_update(B) MD_TOKEN_COMMA md_statement_not_braced_end(C). { +//md_triple_for_update(A) ::= md_triple_for_update(B) "," md_statement_not_braced_end(C). { // if (B->type == MD_AST_NODE_TYPE_NOP) { // mlr_dsl_ast_node_free(B); // A = C; @@ -1519,8 +1460,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_if_block(A) ::= // MD_TOKEN_IF(O) -// MD_TOKEN_LPAREN md_rhs(B) MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE md_statement_block(C) MD_TOKEN_RBRACE. +// "(" RHS(B) ")" +// "{" md_statement_block(C) "}". //{ // mlr_dsl_ast_node_replace_text(C, "if_block"); // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_IF_ITEM, B, C); @@ -1528,8 +1469,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_elif_block(A) ::= // MD_TOKEN_ELIF(O) -// MD_TOKEN_LPAREN md_rhs(B) MD_TOKEN_RPAREN -// MD_TOKEN_LBRACE md_statement_block(C) MD_TOKEN_RBRACE. +// "(" RHS(B) ")" +// "{" md_statement_block(C) "}". //{ // mlr_dsl_ast_node_replace_text(C, "elif_block"); // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_IF_ITEM, B, C); @@ -1537,24 +1478,24 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_else_block(A) ::= // MD_TOKEN_ELSE(O) -// MD_TOKEN_LBRACE md_statement_block(C) MD_TOKEN_RBRACE. +// "{" md_statement_block(C) "}". //{ // mlr_dsl_ast_node_replace_text(C, "else_block"); // A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_IF_ITEM, C); //} //// ---------------------------------------------------------------- -//md_bare_boolean(A) ::= md_rhs(B). { +//md_bare_boolean(A) ::= RHS(B). { // A = B; //} //// ---------------------------------------------------------------- -//md_filter(A) ::= MD_TOKEN_FILTER(O) md_rhs(B). { +//md_filter(A) ::= MD_TOKEN_FILTER(O) RHS(B). { // A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_FILTER, B); //} //// ---------------------------------------------------------------- -//md_untyped_local_definition(A) ::= MD_TOKEN_VAR(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN md_rhs(B). { +//md_untyped_local_definition(A) ::= MD_TOKEN_VAR(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN RHS(B). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_UNTYPED_LOCAL_DEFINITION, N, B); //} //md_untyped_local_definition(A) ::= MD_TOKEN_VAR(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN MD_TOKEN_FULL_SREC(B). { @@ -1567,19 +1508,19 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_MAP_LOCAL_DEFINITION, N, C); //} -//md_numeric_local_definition(A) ::= MD_TOKEN_NUMERIC(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN md_rhs(B). { +//md_numeric_local_definition(A) ::= MD_TOKEN_NUMERIC(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN RHS(B). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_NUMERIC_LOCAL_DEFINITION, N, B); //} -//md_int_local_definition(A) ::= MD_TOKEN_INT(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN md_rhs(B). { +//md_int_local_definition(A) ::= MD_TOKEN_INT(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN RHS(B). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_INT_LOCAL_DEFINITION, N, B); //} -//md_float_local_definition(A) ::= MD_TOKEN_FLOAT(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN md_rhs(B). { +//md_float_local_definition(A) ::= MD_TOKEN_FLOAT(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN RHS(B). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_FLOAT_LOCAL_DEFINITION, N, B); //} -//md_boolean_local_definition(A) ::= MD_TOKEN_BOOLEAN(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN md_rhs(B). { +//md_boolean_local_definition(A) ::= MD_TOKEN_BOOLEAN(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN RHS(B). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_BOOLEAN_LOCAL_DEFINITION, N, B); //} -//md_string_local_definition(A) ::= MD_TOKEN_STRING(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN md_rhs(B). { +//md_string_local_definition(A) ::= MD_TOKEN_STRING(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN RHS(B). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_STRING_LOCAL_DEFINITION, N, B); //} @@ -1592,14 +1533,14 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_map_local_definition(A) ::= MD_TOKEN_MAP(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN MD_TOKEN_FULL_OOSVAR(C). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_MAP_LOCAL_DEFINITION, N, C); //} -//md_map_local_definition(A) ::= MD_TOKEN_MAP(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN md_rhs(C). { +//md_map_local_definition(A) ::= MD_TOKEN_MAP(T) md_nonindexed_local_variable(N) MD_TOKEN_ASSIGN RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(T->text, MD_AST_NODE_TYPE_MAP_LOCAL_DEFINITION, N, C); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_ASSIGN(O) md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_ASSIGN(O) RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, C); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_ASSIGN(O) md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_ASSIGN(O) RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, C); //} @@ -1625,12 +1566,14 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// ---------------------------------------------------------------- -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_ASSIGN(O) md_rhs(C). { +// xxx +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_ASSIGN(O) RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, C); //} + //md_srec_indirect_assignment(A) ::= -// MD_TOKEN_DOLLAR_SIGN MD_TOKEN_LEFT_BRACKET md_rhs(B) MD_TOKEN_RIGHT_BRACKET -// MD_TOKEN_ASSIGN(O) md_rhs(C). +// MD_TOKEN_DOLLAR_SIGN MD_TOKEN_LEFT_BRACKET RHS(B) MD_TOKEN_RIGHT_BRACKET +// MD_TOKEN_ASSIGN(O) RHS(C). //{ // A = mlr_dsl_ast_node_alloc_binary( // O->text, @@ -1642,9 +1585,9 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_srec_positional_name_assignment(A) ::= // MD_TOKEN_DOLLAR_SIGN // MD_TOKEN_LEFT_BRACKET MD_TOKEN_LEFT_BRACKET -// md_rhs(B) +// RHS(B) // MD_TOKEN_RIGHT_BRACKET MD_TOKEN_RIGHT_BRACKET -// MD_TOKEN_ASSIGN(O) md_rhs(C). +// MD_TOKEN_ASSIGN(O) RHS(C). //{ // A = mlr_dsl_ast_node_alloc_binary( // O->text, @@ -1658,9 +1601,9 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_srec_positional_value_assignment(A) ::= // MD_TOKEN_DOLLAR_SIGN // MD_TOKEN_LEFT_BRACKET MD_TOKEN_LEFT_BRACKET MD_TOKEN_LEFT_BRACKET -// md_rhs(B) +// RHS(B) // MD_TOKEN_RIGHT_BRACKET MD_TOKEN_RIGHT_BRACKET MD_TOKEN_RIGHT_BRACKET -// MD_TOKEN_ASSIGN(O) md_rhs(C). +// MD_TOKEN_ASSIGN(O) RHS(C). //{ // A = mlr_dsl_ast_node_alloc_binary( // O->text, @@ -1674,7 +1617,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // ); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_ASSIGN(O) md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_ASSIGN(O) RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, C); //} @@ -1686,7 +1629,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, C); //} -//md_full_oosvar_assignment(A) ::= MD_TOKEN_FULL_OOSVAR(B) MD_TOKEN_ASSIGN(O) md_rhs(C). { +//md_full_oosvar_assignment(A) ::= MD_TOKEN_FULL_OOSVAR(B) MD_TOKEN_ASSIGN(O) RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FULL_OOSVAR_ASSIGNMENT, B, C); //} @@ -1710,7 +1653,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OOSVAR_FROM_FULL_SREC_ASSIGNMENT, B, C); //} -//md_full_srec_assignment(A) ::= MD_TOKEN_FULL_SREC(B) MD_TOKEN_ASSIGN(O) md_rhs(C). { +//md_full_srec_assignment(A) ::= MD_TOKEN_FULL_SREC(B) MD_TOKEN_ASSIGN(O) RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, // MD_AST_NODE_TYPE_FULL_SREC_ASSIGNMENT, B, C); //} @@ -1724,445 +1667,447 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_FULL_SREC_ASSIGNMENT, B, C); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_ASSIGN(O) md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_ASSIGN(O) RHS(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, C); //} -//// ---------------------------------------------------------------- -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_LOGICAL_OR_EQUALS md_rhs(C). { +// ---------------------------------------------------------------- +// xxx + +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_LOGICAL_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("||", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_LOGICAL_XOR_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_LOGICAL_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_LOGICAL_AND_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_LOGICAL_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_BITWISE_OR_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_BITWISE_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("|", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_BITWISE_XOR_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_BITWISE_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_BITWISE_AND_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_BITWISE_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_BITWISE_LSH_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_BITWISE_LSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("<<", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_BITWISE_RSH_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_BITWISE_RSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(">>", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_PLUS_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_PLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_MINUS_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_MINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_DOT_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_DOT_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_TIMES_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_TIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_DIVIDE_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("/", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_INT_DIVIDE_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_INT_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_OPLUS_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_OPLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_OMINUS_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_OMINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_OTIMES_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_OTIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_ODIVIDE_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("./", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_INT_ODIVIDE_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_INT_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_MOD_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_MOD_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("%", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_POW_EQUALS md_rhs(C). { +//SrecAssignment(A) ::= md_token_field_name(B) MD_TOKEN_POW_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("**", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_LOGICAL_OR_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_LOGICAL_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("||", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_LOGICAL_XOR_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_LOGICAL_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_LOGICAL_AND_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_LOGICAL_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_OR_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("|", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_XOR_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_AND_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_LSH_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_LSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("<<", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_RSH_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_BITWISE_RSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(">>", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_PLUS_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_PLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_MINUS_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_MINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_DOT_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_DOT_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_TIMES_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_TIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_DIVIDE_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("/", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_INT_DIVIDE_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_INT_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_MOD_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_MOD_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("%", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_POW_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_POW_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("**", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_OPLUS_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_OPLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_OMINUS_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_OMINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_OTIMES_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_OTIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_ODIVIDE_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("./", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_INT_ODIVIDE_EQUALS md_rhs(C). { +//md_oosvar_assignment(A) ::= md_oosvar_keylist(B) MD_TOKEN_INT_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LOGICAL_OR_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LOGICAL_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("||", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LOGICAL_XOR_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LOGICAL_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LOGICAL_AND_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LOGICAL_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_OR_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("|", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_XOR_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_AND_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_LSH_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_LSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("<<", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_RSH_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_BITWISE_RSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(">>", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_PLUS_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_PLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_MINUS_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_MINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_DOT_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_DOT_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_TIMES_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_TIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_DIVIDE_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("/", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_INT_DIVIDE_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_INT_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_MOD_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_MOD_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("%", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_POW_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_POW_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("**", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_OPLUS_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_OPLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_OMINUS_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_OMINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_OTIMES_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_OTIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_ODIVIDE_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("./", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_INT_ODIVIDE_EQUALS md_rhs(C). { +//md_nonindexed_local_assignment(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_INT_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_NONINDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_LOGICAL_OR_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_LOGICAL_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("||", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_LOGICAL_XOR_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_LOGICAL_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_LOGICAL_AND_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_LOGICAL_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_OR_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("|", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_XOR_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_AND_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_LSH_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_LSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("<<", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_RSH_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_BITWISE_RSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(">>", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_PLUS_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_PLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_MINUS_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_MINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_DOT_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_DOT_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_TIMES_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_TIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_DIVIDE_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("/", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_INT_DIVIDE_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_INT_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_MOD_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_MOD_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("%", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_POW_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_POW_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("**", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_OPLUS_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_OPLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_OMINUS_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_OMINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_OTIMES_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_OTIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_ODIVIDE_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("./", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_INT_ODIVIDE_EQUALS md_rhs(C). { +//md_indexed_local_assignment(A) ::= md_indexed_local_variable(B) MD_TOKEN_INT_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_INDEXED_LOCAL_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} //// ---------------------------------------------------------------- -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_LOGICAL_OR_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_LOGICAL_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("||", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_LOGICAL_XOR_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_LOGICAL_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_LOGICAL_AND_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_LOGICAL_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_OR_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_OR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("|", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_XOR_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_XOR_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("^", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_AND_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_AND_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("&", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_LSH_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_LSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("<<", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_RSH_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_BITWISE_RSH_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(">>", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_PLUS_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_PLUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("+", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_MINUS_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_MINUS_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("-", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_DOT_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_DOT_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_TIMES_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_TIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_DIVIDE_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("/", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_INT_DIVIDE_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_INT_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_MOD_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_MOD_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("%", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_POW_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_POW_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("**", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OTIMES_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OTIMES_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".*", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_ODIVIDE_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_ODIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary("./", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OINT_DIVIDE_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OINT_DIVIDE_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".//", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OMOD_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OMOD_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".%", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} -//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OPOW_EQUALS md_rhs(C). { +//md_env_assignment(A) ::= md_env_index(B) MD_TOKEN_OPOW_EQUALS RHS(C). { // A = mlr_dsl_ast_node_alloc_binary("=", MD_AST_NODE_TYPE_ENV_ASSIGNMENT, B, // mlr_dsl_ast_node_alloc_binary(".**", MD_AST_NODE_TYPE_OPERATOR, mlr_dsl_ast_tree_copy(B) , C)); //} @@ -2182,7 +2127,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_zary("temp", MD_AST_NODE_TYPE_UNSET); //} -//md_unset_args(A) ::= md_field_name(B). { +//md_unset_args(A) ::= md_token_field_name(B). { // A = mlr_dsl_ast_node_alloc_unary("temp", MD_AST_NODE_TYPE_UNSET, B); //} //md_unset_args(A) ::= md_indirect_field_name(B). { @@ -2204,27 +2149,27 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc_unary("temp", MD_AST_NODE_TYPE_UNSET, B); //} -//md_unset_args(A) ::= md_unset_args(B) MD_TOKEN_COMMA md_field_name(C). { +//md_unset_args(A) ::= md_unset_args(B) "," md_token_field_name(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} -//md_unset_args(A) ::= md_unset_args(B) MD_TOKEN_COMMA md_oosvar_keylist(C). { +//md_unset_args(A) ::= md_unset_args(B) "," md_oosvar_keylist(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} //// ---------------------------------------------------------------- -//md_tee_write(A) ::= MD_TOKEN_TEE(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA MD_TOKEN_FULL_SREC(M). { +//md_tee_write(A) ::= MD_TOKEN_TEE(O) MD_TOKEN_GT md_output_file(F) "," MD_TOKEN_FULL_SREC(M). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_TEE, // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, F), // M); //} -//md_tee_append(A) ::= MD_TOKEN_TEE(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA MD_TOKEN_FULL_SREC(M). { +//md_tee_append(A) ::= MD_TOKEN_TEE(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," MD_TOKEN_FULL_SREC(M). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_TEE, // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, F), // M); //} -//md_tee_pipe(A) ::= MD_TOKEN_TEE(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA MD_TOKEN_FULL_SREC(M). { +//md_tee_pipe(A) ::= MD_TOKEN_TEE(O) MD_TOKEN_BITWISE_OR RHS(P) "," MD_TOKEN_FULL_SREC(M). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_TEE, // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, P), // M); @@ -2256,29 +2201,29 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_emitf_args(A) ::= md_indexed_local_variable(B). { // A = mlr_dsl_ast_node_alloc_unary("temp", MD_AST_NODE_TYPE_EMITF, B); //} -//md_emitf_args(A) ::= md_emitf_args(B) MD_TOKEN_COMMA md_oosvar_keylist(C). { +//md_emitf_args(A) ::= md_emitf_args(B) "," md_oosvar_keylist(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} -//md_emitf_args(A) ::= md_emitf_args(B) MD_TOKEN_COMMA md_nonindexed_local_variable(C). { +//md_emitf_args(A) ::= md_emitf_args(B) "," md_nonindexed_local_variable(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} -//md_emitf_args(A) ::= md_emitf_args(B) MD_TOKEN_COMMA md_indexed_local_variable(C). { +//md_emitf_args(A) ::= md_emitf_args(B) "," md_indexed_local_variable(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} -//md_emitf_write(A) ::= MD_TOKEN_EMITF(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA md_emitf_args(B). { +//md_emitf_write(A) ::= MD_TOKEN_EMITF(O) MD_TOKEN_GT md_output_file(F) "," md_emitf_args(B). { // B = mlr_dsl_ast_node_set_function_name(B, O->text); // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITF, B, // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, F)); //} -//md_emitf_append(A) ::= MD_TOKEN_EMITF(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA md_emitf_args(B). { +//md_emitf_append(A) ::= MD_TOKEN_EMITF(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," md_emitf_args(B). { // B = mlr_dsl_ast_node_set_function_name(B, O->text); // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITF, B, // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, F)); //} -//md_emitf_pipe(A) ::= MD_TOKEN_EMITF(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA md_emitf_args(B). { +//md_emitf_pipe(A) ::= MD_TOKEN_EMITF(O) MD_TOKEN_BITWISE_OR RHS(P) "," md_emitf_args(B). { // B = mlr_dsl_ast_node_set_function_name(B, O->text); // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITF, B, // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, P)); @@ -2292,13 +2237,13 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} -//md_emitp(A) ::= MD_TOKEN_EMITP(O) md_emittable(B) MD_TOKEN_COMMA md_emitp_namelist(C). { +//md_emitp(A) ::= MD_TOKEN_EMITP(O) md_emittable(B) "," md_emitp_namelist(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, B, C), // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} -//md_emitp_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA +//md_emitp_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) "," // md_emittable(B). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, @@ -2306,8 +2251,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, // F)); //} -//md_emitp_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA -// md_emittable(B) MD_TOKEN_COMMA md_emitp_namelist(C). +//md_emitp_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) "," +// md_emittable(B) "," md_emitp_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, B, C), @@ -2315,7 +2260,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // F)); //} -//md_emitp_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA +//md_emitp_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," // md_emittable(B). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, @@ -2323,8 +2268,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, // F)); //} -//md_emitp_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA -// md_emittable(B) MD_TOKEN_COMMA md_emitp_namelist(C). +//md_emitp_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," +// md_emittable(B) "," md_emitp_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, B, C), @@ -2332,7 +2277,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // F)); //} -//md_emitp_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA +//md_emitp_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR RHS(P) "," // md_emittable(B). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, @@ -2340,8 +2285,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, // P)); //} -//md_emitp_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA -// md_emittable(B) MD_TOKEN_COMMA md_emitp_namelist(C). +//md_emitp_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR RHS(P) "," +// md_emittable(B) "," md_emitp_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP, B, C), @@ -2350,10 +2295,10 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// ---------------------------------------------------------------- -//md_emitp_namelist(A) ::= md_rhs(B). { +//md_emitp_namelist(A) ::= RHS(B). { // A = mlr_dsl_ast_node_alloc_unary("emitp_namelist", MD_AST_NODE_TYPE_EMITP, B); //} -//md_emitp_namelist(A) ::= md_emitp_namelist(B) MD_TOKEN_COMMA md_rhs(C). { +//md_emitp_namelist(A) ::= md_emitp_namelist(B) "," RHS(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} @@ -2364,14 +2309,14 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} -//md_emit(A) ::= MD_TOKEN_EMIT(O) md_emittable(B) MD_TOKEN_COMMA md_emit_namelist(C). { +//md_emit(A) ::= MD_TOKEN_EMIT(O) md_emittable(B) "," md_emit_namelist(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, B, C), // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} -//md_emit_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA +//md_emit_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) "," // md_emittable(B). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, @@ -2379,8 +2324,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, // F)); //} -//md_emit_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA -// md_emittable(B) MD_TOKEN_COMMA md_emit_namelist(C). +//md_emit_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) "," +// md_emittable(B) "," md_emit_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, B, C), @@ -2388,7 +2333,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // F)); //} -//md_emit_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA +//md_emit_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," // md_emittable(B). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, @@ -2396,8 +2341,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, // F)); //} -//md_emit_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA -// md_emittable(B) MD_TOKEN_COMMA md_emit_namelist(C). +//md_emit_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," +// md_emittable(B) "," md_emit_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, B, C), @@ -2405,7 +2350,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // F)); //} -//md_emit_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA +//md_emit_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR RHS(P) "," // md_emittable(B). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, @@ -2413,8 +2358,8 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, // P)); //} -//md_emit_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA -// md_emittable(B) MD_TOKEN_COMMA md_emit_namelist(C). +//md_emit_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR RHS(P) "," +// md_emittable(B) "," md_emit_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT, B, C), @@ -2449,72 +2394,72 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// ---------------------------------------------------------------- -//md_emit_namelist(A) ::= md_rhs(B). { +//md_emit_namelist(A) ::= RHS(B). { // A = mlr_dsl_ast_node_alloc_unary("emit_namelist", MD_AST_NODE_TYPE_EMIT, B); //} -//md_emit_namelist(A) ::= md_emit_namelist(B) MD_TOKEN_COMMA md_rhs(C). { +//md_emit_namelist(A) ::= md_emit_namelist(B) "," RHS(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} //// ---------------------------------------------------------------- //md_emitp_lashed(A) ::= MD_TOKEN_EMITP(O) -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN. +// "(" md_emitp_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B), // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} //md_emitp_lashed(A) ::= MD_TOKEN_EMITP(O) -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emitp_lashed_namelist(C). +// "(" md_emitp_lashed_keylists(B) ")" +// "," md_emitp_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B, C), // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} -//md_emitp_lashed_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN. +//md_emitp_lashed_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) "," +// "(" md_emitp_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B), // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, F)); //} -//md_emitp_lashed_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emitp_lashed_namelist(C). +//md_emitp_lashed_write(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_GT md_output_file(F) "," +// "(" md_emitp_lashed_keylists(B) ")" +// "," md_emitp_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B, C), // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, F)); //} -//md_emitp_lashed_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN. +//md_emitp_lashed_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," +// "(" md_emitp_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B), // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, F)); //} -//md_emitp_lashed_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emitp_lashed_namelist(C). +//md_emitp_lashed_append(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," +// "(" md_emitp_lashed_keylists(B) ")" +// "," md_emitp_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B, C), // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, F)); //} -//md_emitp_lashed_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN. +//md_emitp_lashed_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR RHS(P) "," +// "(" md_emitp_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B), // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, P)); //} -//md_emitp_lashed_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emitp_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emitp_lashed_namelist(C). +//md_emitp_lashed_pipe(A) ::= MD_TOKEN_EMITP(O) MD_TOKEN_BITWISE_OR RHS(P) "," +// "(" md_emitp_lashed_keylists(B) ")" +// "," md_emitp_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMITP_LASHED, B, C), @@ -2525,77 +2470,77 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_emitp_lashed_keylists(A) ::= md_emittable(B). { // A = mlr_dsl_ast_node_alloc_unary("lashed_keylists", MD_AST_NODE_TYPE_EMITP_LASHED, B); //} -//md_emitp_lashed_keylists(A) ::= md_emitp_lashed_keylists(B) MD_TOKEN_COMMA md_emittable(C). { +//md_emitp_lashed_keylists(A) ::= md_emitp_lashed_keylists(B) "," md_emittable(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} //// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//md_emitp_lashed_namelist(A) ::= md_rhs(B). { +//md_emitp_lashed_namelist(A) ::= RHS(B). { // A = mlr_dsl_ast_node_alloc_unary("lashed_namelist", MD_AST_NODE_TYPE_EMITP_LASHED, B); //} -//md_emitp_lashed_namelist(A) ::= md_emitp_lashed_namelist(B) MD_TOKEN_COMMA md_rhs(C). { +//md_emitp_lashed_namelist(A) ::= md_emitp_lashed_namelist(B) "," RHS(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} //// ---------------------------------------------------------------- //md_emit_lashed(A) ::= MD_TOKEN_EMIT(O) -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN. +// "(" md_emit_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B), // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} //md_emit_lashed(A) ::= MD_TOKEN_EMIT(O) -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emit_lashed_namelist(C). +// "(" md_emit_lashed_keylists(B) ")" +// "," md_emit_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B, C), // mlr_dsl_ast_node_alloc_zary("stream", MD_AST_NODE_TYPE_STREAM)); //} -//md_emit_lashed_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN. +//md_emit_lashed_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) "," +// "(" md_emit_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B), // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, F)); //} -//md_emit_lashed_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emit_lashed_namelist(C). +//md_emit_lashed_write(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_GT md_output_file(F) "," +// "(" md_emit_lashed_keylists(B) ")" +// "," md_emit_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B, C), // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, F)); //} -//md_emit_lashed_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN. +//md_emit_lashed_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," +// "(" md_emit_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B), // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, F)); //} -//md_emit_lashed_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emit_lashed_namelist(C). +//md_emit_lashed_append(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," +// "(" md_emit_lashed_keylists(B) ")" +// "," md_emit_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B, C), // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, F)); //} -//md_emit_lashed_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN. +//md_emit_lashed_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR RHS(P) "," +// "(" md_emit_lashed_keylists(B) ")". //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B), // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, P)); //} -//md_emit_lashed_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA -// MD_TOKEN_LPAREN md_emit_lashed_keylists(B) MD_TOKEN_RPAREN -// MD_TOKEN_COMMA md_emit_lashed_namelist(C). +//md_emit_lashed_pipe(A) ::= MD_TOKEN_EMIT(O) MD_TOKEN_BITWISE_OR RHS(P) "," +// "(" md_emit_lashed_keylists(B) ")" +// "," md_emit_lashed_namelist(C). //{ // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, // mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_EMIT_LASHED, B, C), @@ -2606,15 +2551,15 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_emit_lashed_keylists(A) ::= md_emittable(B). { // A = mlr_dsl_ast_node_alloc_unary("lashed_keylists", MD_AST_NODE_TYPE_EMIT_LASHED, B); //} -//md_emit_lashed_keylists(A) ::= md_emit_lashed_keylists(B) MD_TOKEN_COMMA md_emittable(C). { +//md_emit_lashed_keylists(A) ::= md_emit_lashed_keylists(B) "," md_emittable(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} //// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//md_emit_lashed_namelist(A) ::= md_rhs(B). { +//md_emit_lashed_namelist(A) ::= RHS(B). { // A = mlr_dsl_ast_node_alloc_unary("lashed_namelist", MD_AST_NODE_TYPE_EMIT_LASHED, B); //} -//md_emit_lashed_namelist(A) ::= md_emit_lashed_namelist(B) MD_TOKEN_COMMA md_rhs(C). { +//md_emit_lashed_namelist(A) ::= md_emit_lashed_namelist(B) "," RHS(C). { // A = mlr_dsl_ast_node_append_arg(B, C); //} @@ -2643,7 +2588,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // F), // mlr_dsl_ast_node_alloc("all", MD_AST_NODE_TYPE_FULL_OOSVAR)); //} -//md_dump_pipe(A) ::= MD_TOKEN_DUMP(O) MD_TOKEN_BITWISE_OR md_rhs(P). { +//md_dump_pipe(A) ::= MD_TOKEN_DUMP(O) MD_TOKEN_BITWISE_OR RHS(P). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_DUMP, // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, // P), @@ -2674,7 +2619,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // F), // B); //} -//md_dump_pipe(A) ::= MD_TOKEN_DUMP(O) MD_TOKEN_BITWISE_OR md_dumpable(P) md_rhs(B). { +//md_dump_pipe(A) ::= MD_TOKEN_DUMP(O) MD_TOKEN_BITWISE_OR md_dumpable(P) RHS(B). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_DUMP, // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, // P), @@ -2694,7 +2639,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_dumpable(A) ::= md_map_literal(B). { // A = B; //} -//md_dumpable(A) ::= md_rhs(B). { +//md_dumpable(A) ::= RHS(B). { // A = B; //} @@ -2710,17 +2655,17 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, // mlr_dsl_ast_node_alloc_zary("stdout", MD_AST_NODE_TYPE_STDERR))); //} -//md_print_write(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA md_dumpable(C). { +//md_print_write(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_GT md_output_file(F) "," md_dumpable(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINT, C, // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, // F)); //} -//md_print_append(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA md_dumpable(C). { +//md_print_append(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," md_dumpable(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINT, C, // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, // F)); //} -//md_print_pipe(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA md_dumpable(C). { +//md_print_pipe(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_BITWISE_OR RHS(P) "," md_dumpable(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINT, C, // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, // P)); @@ -2749,7 +2694,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc("", MD_AST_NODE_TYPE_NUMERIC_LITERAL), // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, F)); //} -//md_print_pipe(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_BITWISE_OR md_rhs(P). { +//md_print_pipe(A) ::= MD_TOKEN_PRINT(O) MD_TOKEN_BITWISE_OR RHS(P). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINT, // mlr_dsl_ast_node_alloc("", MD_AST_NODE_TYPE_NUMERIC_LITERAL), // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, P)); @@ -2766,17 +2711,17 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, // mlr_dsl_ast_node_alloc_zary("stdout", MD_AST_NODE_TYPE_STDERR))); //} -//md_printn_write(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_GT md_output_file(F) MD_TOKEN_COMMA md_dumpable(C). { +//md_printn_write(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_GT md_output_file(F) "," md_dumpable(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINTN, C, // mlr_dsl_ast_node_alloc_unary(">", MD_AST_NODE_TYPE_FILE_WRITE, // F)); //} -//md_printn_append(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_BITWISE_RSH md_output_file(F) MD_TOKEN_COMMA md_dumpable(C). { +//md_printn_append(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_BITWISE_RSH md_output_file(F) "," md_dumpable(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINTN, C, // mlr_dsl_ast_node_alloc_unary(">>", MD_AST_NODE_TYPE_FILE_APPEND, // F)); //} -//md_printn_pipe(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_BITWISE_OR md_rhs(P) MD_TOKEN_COMMA md_dumpable(C). { +//md_printn_pipe(A) ::= MD_TOKEN_PRINTN(O) MD_TOKEN_BITWISE_OR RHS(P) "," md_dumpable(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_PRINTN, C, // mlr_dsl_ast_node_alloc_unary("|", MD_AST_NODE_TYPE_PIPE, // P)); @@ -2813,14 +2758,16 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// ---------------------------------------------------------------- -//md_output_file(A) ::= md_rhs(F). { A = F; } +//md_output_file(A) ::= RHS(F). { A = F; } //md_output_file(A) ::= MD_TOKEN_STDOUT(F). { A = F; } //md_output_file(A) ::= MD_TOKEN_STDERR(F). { A = F; } -//// ================================================================ -//// Begin RHS precedence chain +// ================================================================ +// Begin RHS precedence chain -//md_rhs(A) ::= md_ternary(B). { +// xxx + +//RHS(A) ::= md_ternary(B). { // A = B; //} @@ -2997,10 +2944,10 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// ---------------------------------------------------------------- -//md_pow_term(A) ::= md_atom_or_fcn(B). { +//md_pow_term(A) ::= AtomOrFunction(B). { // A = B; //} -//md_pow_term(A) ::= md_atom_or_fcn(B) MD_TOKEN_POW(O) md_pow_term(C). { +//md_pow_term(A) ::= AtomOrFunction(B) MD_TOKEN_POW(O) md_pow_term(C). { // A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C); //} @@ -3011,15 +2958,10 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// lexer to give us field names with leading "$" so we can confidently strip it //// off here. -//md_atom_or_fcn(A) ::= md_field_name(B). { -// A = B; -//} -//md_field_name(A) ::= MD_TOKEN_FIELD_NAME(B). { -// char* dollar_name = B->text; -// char* no_dollar_name = &dollar_name[1]; -// A = mlr_dsl_ast_node_alloc(no_dollar_name, B->type); -//} -//md_field_name(A) ::= MD_TOKEN_BRACED_FIELD_NAME(B). { +AtomOrFunction + : md_token_field_name << dsl.NewASTNode($0, dsl.NodeTypeToken) >> ; + +//md_token_field_name(A) ::= MD_TOKEN_BRACED_FIELD_NAME(B). { // // Replace "${field.name}" with just "field.name" // char* dollar_name = B->text; // char* no_dollar_name = &dollar_name[2]; @@ -3029,19 +2971,19 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc(no_dollar_name, B->type); //} -//md_atom_or_fcn(A) ::= md_indirect_field_name(B). { +//AtomOrFunction(A) ::= md_indirect_field_name(B). { // A = B; //} -//md_indirect_field_name(A) ::= MD_TOKEN_DOLLAR_SIGN MD_TOKEN_LEFT_BRACKET md_rhs(B) MD_TOKEN_RIGHT_BRACKET. { +//md_indirect_field_name(A) ::= MD_TOKEN_DOLLAR_SIGN MD_TOKEN_LEFT_BRACKET RHS(B) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_alloc_unary("indirect_field_name", MD_AST_NODE_TYPE_INDIRECT_FIELD_NAME, B); //} -//md_atom_or_fcn(A) ::= md_positional_srec_name(B). { +//AtomOrFunction(A) ::= md_positional_srec_name(B). { // A = B; //} //md_positional_srec_name(A) ::= MD_TOKEN_DOLLAR_SIGN // MD_TOKEN_LEFT_BRACKET MD_TOKEN_LEFT_BRACKET -// md_rhs(B) +// RHS(B) // MD_TOKEN_RIGHT_BRACKET MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_alloc_unary( // "positional_srec_field_name", @@ -3052,12 +2994,12 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// '$value = $[[[3]]]' is shorthand for '$value = $[ $[[3]] ]'. //// Note that '$[[3]]' is key at srec position 3 and '$[[[3]]]' is value at srec position 3. -//md_atom_or_fcn(A) ::= md_positional_srec_value(B). { +//AtomOrFunction(A) ::= md_positional_srec_value(B). { // A = B; //} //md_positional_srec_value(A) ::= MD_TOKEN_DOLLAR_SIGN // MD_TOKEN_LEFT_BRACKET MD_TOKEN_LEFT_BRACKET MD_TOKEN_LEFT_BRACKET -// md_rhs(B) +// RHS(B) // MD_TOKEN_RIGHT_BRACKET MD_TOKEN_RIGHT_BRACKET MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_alloc_unary( // "indirect_field_name", @@ -3071,14 +3013,14 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// ---------------------------------------------------------------- -//md_atom_or_fcn(A) ::= md_oosvar_keylist(B). { +//AtomOrFunction(A) ::= md_oosvar_keylist(B). { // A = B; //} //md_oosvar_keylist(A) ::= md_oosvar_basename(B). { // A = B; //} -//md_oosvar_keylist(A) ::= md_oosvar_keylist(B) MD_TOKEN_LEFT_BRACKET md_rhs(C) MD_TOKEN_RIGHT_BRACKET. { +//md_oosvar_keylist(A) ::= md_oosvar_keylist(B) MD_TOKEN_LEFT_BRACKET RHS(C) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_append_arg(B, C); //} @@ -3103,40 +3045,39 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //} //// E.g. @["name"] -//md_oosvar_basename(A) ::= MD_TOKEN_AT_SIGN MD_TOKEN_LEFT_BRACKET md_rhs(B) MD_TOKEN_RIGHT_BRACKET. { +//md_oosvar_basename(A) ::= MD_TOKEN_AT_SIGN MD_TOKEN_LEFT_BRACKET RHS(B) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_alloc_unary("oosvar_keylist", MD_AST_NODE_TYPE_OOSVAR_KEYLIST, B); //} //md_local_map_keylist(A) ::= md_nonindexed_local_variable(B). { // A = B; //} -//md_local_map_keylist(A) ::= md_local_map_keylist(B) MD_TOKEN_LEFT_BRACKET md_rhs(C) MD_TOKEN_RIGHT_BRACKET. { +//md_local_map_keylist(A) ::= md_local_map_keylist(B) MD_TOKEN_LEFT_BRACKET RHS(C) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_append_arg(B, C); //} -//// ---------------------------------------------------------------- -//md_atom_or_fcn(A) ::= MD_TOKEN_NUMBER(B). { +// ---------------------------------------------------------------- +AtomOrFunction + : md_token_number << dsl.NewASTNode($0, dsl.NodeTypeToken) >> ; + +AtomOrFunction + : "true" << dsl.NewASTNode($0, dsl.NodeTypeToken) >> ; + +AtomOrFunction + : "false" << dsl.NewASTNode($0, dsl.NodeTypeToken) >> ; + +//AtomOrFunction(A) ::= md_string(B). { // A = B; //} -//md_atom_or_fcn(A) ::= MD_TOKEN_TRUE(B). { -// A = B; -//} -//md_atom_or_fcn(A) ::= MD_TOKEN_FALSE(B). { +//AtomOrFunction(A) ::= md_regexi(B). { // A = B; //} -//md_atom_or_fcn(A) ::= md_string(B). { -// A = B; -//} -//md_atom_or_fcn(A) ::= md_regexi(B). { +//AtomOrFunction(A) ::= md_nonindexed_local_variable(B). { // A = B; //} -//md_atom_or_fcn(A) ::= md_nonindexed_local_variable(B). { -// A = B; -//} - -//md_atom_or_fcn(A) ::= md_indexed_local_variable(B). { +//AtomOrFunction(A) ::= md_indexed_local_variable(B). { // A = B; //} @@ -3144,16 +3085,16 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc(B->text, MD_AST_NODE_TYPE_NONINDEXED_LOCAL_VARIABLE); //} -//md_indexed_local_variable(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LEFT_BRACKET md_rhs(C) MD_TOKEN_RIGHT_BRACKET. { +//md_indexed_local_variable(A) ::= md_nonindexed_local_variable(B) MD_TOKEN_LEFT_BRACKET RHS(C) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_alloc_unary(B->text, MD_AST_NODE_TYPE_INDEXED_LOCAL_VARIABLE, C); // mlr_dsl_ast_node_free(B); //} -//md_indexed_local_variable(A) ::= md_indexed_local_variable(B) MD_TOKEN_LEFT_BRACKET md_rhs(C) MD_TOKEN_RIGHT_BRACKET. { +//md_indexed_local_variable(A) ::= md_indexed_local_variable(B) MD_TOKEN_LEFT_BRACKET RHS(C) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_append_arg(B, C); //} -//md_atom_or_fcn(A) ::= md_indexed_function_call(B). { +//AtomOrFunction(A) ::= md_indexed_function_call(B). { // A = B; //} @@ -3171,7 +3112,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// text="indexing", type=MD_AST_NODE_TYPE_INDEXED_FUNCTION_INDEX_LIST: //// text="4", type=NUMERIC_LITERAL. //// text="5", type=NUMERIC_LITERAL. -//md_indexed_function_call(A) ::= md_fcn_or_subr_call(B) MD_TOKEN_LEFT_BRACKET md_rhs(C) MD_TOKEN_RIGHT_BRACKET. { +//md_indexed_function_call(A) ::= md_fcn_or_subr_call(B) MD_TOKEN_LEFT_BRACKET RHS(C) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_alloc_binary( // B->text, // MD_AST_NODE_TYPE_INDEXED_FUNCTION_CALLSITE, @@ -3183,7 +3124,7 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // ) // ); //} -//md_indexed_function_call(A) ::= md_indexed_function_call(B) MD_TOKEN_LEFT_BRACKET md_rhs(C) MD_TOKEN_RIGHT_BRACKET. { +//md_indexed_function_call(A) ::= md_indexed_function_call(B) MD_TOKEN_LEFT_BRACKET RHS(C) MD_TOKEN_RIGHT_BRACKET. { // // Append to second child node which is list of indexing expressions. // A = mlr_dsl_ast_node_append_arg_to_second_child(B, C); //} @@ -3203,22 +3144,22 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; // A = mlr_dsl_ast_node_alloc(mlr_alloc_unbackslash(stripped), B->type); //} -//md_atom_or_fcn(A) ::= MD_TOKEN_CONTEXT_VARIABLE(B). { +//AtomOrFunction(A) ::= MD_TOKEN_CONTEXT_VARIABLE(B). { // A = B; //} -//md_atom_or_fcn(A) ::= md_env_index(B). { +//AtomOrFunction(A) ::= md_env_index(B). { // A = B; //} -//md_env_index(A) ::= MD_TOKEN_ENV(B) MD_TOKEN_LEFT_BRACKET md_rhs(C) MD_TOKEN_RIGHT_BRACKET. { +//md_env_index(A) ::= MD_TOKEN_ENV(B) MD_TOKEN_LEFT_BRACKET RHS(C) MD_TOKEN_RIGHT_BRACKET. { // A = mlr_dsl_ast_node_alloc_binary("env", MD_AST_NODE_TYPE_ENV, B, C); //} -//md_atom_or_fcn(A) ::= MD_TOKEN_LPAREN md_rhs(B) MD_TOKEN_RPAREN. { +//AtomOrFunction(A) ::= "(" RHS(B) ")". { // A = B; //} -//md_atom_or_fcn(A) ::= md_fcn_or_subr_call(B). { +//AtomOrFunction(A) ::= md_fcn_or_subr_call(B). { // A = B; //} @@ -3229,18 +3170,18 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// * On the "c" we append the next argument to get "anon(a,b,c)". //// * On the "f" we change the function name to get "f(a,b,c)". -//md_fcn_or_subr_call(A) ::= MD_TOKEN_NON_SIGIL_NAME(O) MD_TOKEN_LPAREN md_fcn_arg_list(B) MD_TOKEN_RPAREN. { +//md_fcn_or_subr_call(A) ::= MD_TOKEN_NON_SIGIL_NAME(O) "(" md_fcn_arg_list(B) ")". { // A = mlr_dsl_ast_node_set_function_name(B, O->text); // A->type = MD_AST_NODE_TYPE_FUNCTION_CALLSITE; //} //// For most functions it suffices to use the MD_TOKEN_NON_SIGIL_NAME pattern. But //// int and float are keywords in the lexer so we need to spell those out explicitly. //// (They're type-decl keywords but they're also the names of type-conversion functions.) -//md_fcn_or_subr_call(A) ::= MD_TOKEN_INT(O) MD_TOKEN_LPAREN md_fcn_arg_list(B) MD_TOKEN_RPAREN. { +//md_fcn_or_subr_call(A) ::= MD_TOKEN_INT(O) "(" md_fcn_arg_list(B) ")". { // A = mlr_dsl_ast_node_set_function_name(B, O->text); // A->type = MD_AST_NODE_TYPE_FUNCTION_CALLSITE; //} -//md_fcn_or_subr_call(A) ::= MD_TOKEN_FLOAT(O) MD_TOKEN_LPAREN md_fcn_arg_list(B) MD_TOKEN_RPAREN. { +//md_fcn_or_subr_call(A) ::= MD_TOKEN_FLOAT(O) "(" md_fcn_arg_list(B) ")". { // A = mlr_dsl_ast_node_set_function_name(B, O->text); // A->type = MD_AST_NODE_TYPE_FUNCTION_CALLSITE; //} @@ -3255,14 +3196,14 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //md_fcn_non_empty_arg_list(A) ::= md_fcn_arg(B). { // A = mlr_dsl_ast_node_alloc_unary("anon", MD_AST_NODE_TYPE_NON_SIGIL_NAME, B); //} -//md_fcn_non_empty_arg_list(A) ::= md_fcn_arg(B) MD_TOKEN_COMMA. { +//md_fcn_non_empty_arg_list(A) ::= md_fcn_arg(B) ",". { // A = mlr_dsl_ast_node_alloc_unary("anon", MD_AST_NODE_TYPE_NON_SIGIL_NAME, B); //} -//md_fcn_non_empty_arg_list(A) ::= md_fcn_arg(B) MD_TOKEN_COMMA md_fcn_non_empty_arg_list(C). { +//md_fcn_non_empty_arg_list(A) ::= md_fcn_arg(B) "," md_fcn_non_empty_arg_list(C). { // A = mlr_dsl_ast_node_prepend_arg(C, B); //} -//md_fcn_arg(A) ::= md_rhs(B). { +//md_fcn_arg(A) ::= RHS(B). { // A = B; //} //md_fcn_arg(A) ::= MD_TOKEN_FULL_SREC(B). { @@ -3278,30 +3219,30 @@ Number: md_token_number << dsl.NewASTNode($0, dsl.NodeTypeLeaf) >> ; //// ---------------------------------------------------------------- //// Map-literals in Miller are JSON-ish. -//md_map_literal(A) ::= MD_TOKEN_LBRACE MD_TOKEN_RBRACE. { +//md_map_literal(A) ::= "{" "}". { // A = mlr_dsl_ast_node_alloc_zary("map_literal", MD_AST_NODE_TYPE_MAP_LITERAL); //} -//md_map_literal(A) ::= MD_TOKEN_LBRACE md_map_literal_kv_pairs(B) MD_TOKEN_RBRACE. { +//md_map_literal(A) ::= "{" md_map_literal_kv_pairs(B) "}". { // A = B; //} //md_map_literal_kv_pairs(A) ::= md_map_literal_kv_pair(B). { // A = mlr_dsl_ast_node_alloc_unary("map_literal", MD_AST_NODE_TYPE_MAP_LITERAL, B); //} //// Allow trailing final comma, especially for multiline map literals -//md_map_literal_kv_pairs(A) ::= md_map_literal_kv_pair(B) MD_TOKEN_COMMA. { +//md_map_literal_kv_pairs(A) ::= md_map_literal_kv_pair(B) ",". { // A = mlr_dsl_ast_node_alloc_unary("map_literal", MD_AST_NODE_TYPE_MAP_LITERAL, B); //} -//md_map_literal_kv_pairs(A) ::= md_map_literal_kv_pair(B) MD_TOKEN_COMMA md_map_literal_kv_pairs(C). { +//md_map_literal_kv_pairs(A) ::= md_map_literal_kv_pair(B) "," md_map_literal_kv_pairs(C). { // A = mlr_dsl_ast_node_prepend_arg(C, B); //} //md_map_literal_kv_pair(A) ::= md_map_literal_key(B) MD_TOKEN_COLON md_map_literal_value(C). { // A = mlr_dsl_ast_node_alloc_binary("mappair", MD_AST_NODE_TYPE_MAP_LITERAL_PAIR, B, C); //} -//md_map_literal_key(A) ::= md_rhs(B). { +//md_map_literal_key(A) ::= RHS(B). { // A = mlr_dsl_ast_node_alloc_unary("mapkey", MD_AST_NODE_TYPE_MAP_LITERAL_KEY, B); //} -//md_map_literal_value(A) ::= md_rhs(B). { +//md_map_literal_value(A) ::= RHS(B). { // A = mlr_dsl_ast_node_alloc_unary("mapval", MD_AST_NODE_TYPE_MAP_LITERAL_VALUE, B); //} //md_map_literal_value(A) ::= md_map_literal(B). { diff --git a/go/src/miller/parsing/parser/actiontable.go b/go/src/miller/parsing/parser/actiontable.go index b7e8f7bd7..c1a2b69f6 100644 --- a/go/src/miller/parsing/parser/actiontable.go +++ b/go/src/miller/parsing/parser/actiontable.go @@ -16,10 +16,12 @@ var actionTab = actionTable{ actions: [numSymbols]action{ nil, // INVALID nil, // $ - nil, // md_semicolon + nil, // ; shift(5), // md_token_field_name nil, // md_token_assign nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S1 @@ -27,21 +29,25 @@ var actionTab = actionTable{ actions: [numSymbols]action{ nil, // INVALID accept(true), // $ - nil, // md_semicolon + nil, // ; nil, // md_token_field_name nil, // md_token_assign nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S2 canRecover: false, actions: [numSymbols]action{ nil, // INVALID - reduce(1), // $, reduce: Body - shift(6), // md_semicolon + reduce(1), // $, reduce: Root + shift(6), // ; nil, // md_token_field_name nil, // md_token_assign nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S3 @@ -49,10 +55,12 @@ var actionTab = actionTable{ actions: [numSymbols]action{ nil, // INVALID reduce(2), // $, reduce: StatementBlock - reduce(2), // md_semicolon, reduce: StatementBlock + reduce(2), // ;, reduce: StatementBlock nil, // md_token_field_name nil, // md_token_assign nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S4 @@ -60,10 +68,12 @@ var actionTab = actionTable{ actions: [numSymbols]action{ nil, // INVALID nil, // $ - nil, // md_semicolon + nil, // ; nil, // md_token_field_name shift(8), // md_token_assign nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S5 @@ -71,21 +81,25 @@ var actionTab = actionTable{ actions: [numSymbols]action{ nil, // INVALID nil, // $ - nil, // md_semicolon + nil, // ; nil, // md_token_field_name - reduce(5), // md_token_assign, reduce: FieldName + reduce(6), // md_token_assign, reduce: FieldName nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S6 canRecover: false, actions: [numSymbols]action{ - nil, // INVALID - nil, // $ - nil, // md_semicolon - shift(5), // md_token_field_name - nil, // md_token_assign - nil, // md_token_number + nil, // INVALID + reduce(3), // $, reduce: StatementBlock + reduce(3), // ;, reduce: StatementBlock + shift(5), // md_token_field_name + nil, // md_token_assign + nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S7 @@ -93,10 +107,12 @@ var actionTab = actionTable{ actions: [numSymbols]action{ nil, // INVALID nil, // $ - nil, // md_semicolon - nil, // md_token_field_name + nil, // ; + shift(11), // md_token_field_name nil, // md_token_assign - shift(11), // md_token_number + shift(12), // md_token_number + shift(13), // true + shift(14), // false }, }, actionRow{ // S8 @@ -104,43 +120,90 @@ var actionTab = actionTable{ actions: [numSymbols]action{ nil, // INVALID nil, // $ - nil, // md_semicolon - nil, // md_token_field_name + nil, // ; + reduce(7), // md_token_field_name, reduce: Assign nil, // md_token_assign - reduce(6), // md_token_number, reduce: Assign + reduce(7), // md_token_number, reduce: Assign + reduce(7), // true, reduce: Assign + reduce(7), // false, reduce: Assign }, }, actionRow{ // S9 canRecover: false, actions: [numSymbols]action{ nil, // INVALID - reduce(3), // $, reduce: StatementBlock - reduce(3), // md_semicolon, reduce: StatementBlock + reduce(4), // $, reduce: StatementBlock + reduce(4), // ;, reduce: StatementBlock nil, // md_token_field_name nil, // md_token_assign nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S10 canRecover: false, actions: [numSymbols]action{ nil, // INVALID - reduce(4), // $, reduce: Statement - reduce(4), // md_semicolon, reduce: Statement + reduce(5), // $, reduce: Statement + reduce(5), // ;, reduce: Statement nil, // md_token_field_name nil, // md_token_assign nil, // md_token_number + nil, // true + nil, // false }, }, actionRow{ // S11 canRecover: false, actions: [numSymbols]action{ nil, // INVALID - reduce(7), // $, reduce: Number - reduce(7), // md_semicolon, reduce: Number + reduce(8), // $, reduce: AtomOrFunction + reduce(8), // ;, reduce: AtomOrFunction nil, // md_token_field_name nil, // md_token_assign nil, // md_token_number + nil, // true + nil, // false + }, + }, + actionRow{ // S12 + canRecover: false, + actions: [numSymbols]action{ + nil, // INVALID + reduce(9), // $, reduce: AtomOrFunction + reduce(9), // ;, reduce: AtomOrFunction + nil, // md_token_field_name + nil, // md_token_assign + nil, // md_token_number + nil, // true + nil, // false + }, + }, + actionRow{ // S13 + canRecover: false, + actions: [numSymbols]action{ + nil, // INVALID + reduce(10), // $, reduce: AtomOrFunction + reduce(10), // ;, reduce: AtomOrFunction + nil, // md_token_field_name + nil, // md_token_assign + nil, // md_token_number + nil, // true + nil, // false + }, + }, + actionRow{ // S14 + canRecover: false, + actions: [numSymbols]action{ + nil, // INVALID + reduce(11), // $, reduce: AtomOrFunction + reduce(11), // ;, reduce: AtomOrFunction + nil, // md_token_field_name + nil, // md_token_assign + nil, // md_token_number + nil, // true + nil, // false }, }, } diff --git a/go/src/miller/parsing/parser/gototable.go b/go/src/miller/parsing/parser/gototable.go index f8928ad64..1a2083016 100644 --- a/go/src/miller/parsing/parser/gototable.go +++ b/go/src/miller/parsing/parser/gototable.go @@ -12,110 +12,137 @@ type ( var gotoTab = gotoTable{ gotoRow{ // S0 -1, // S' - 1, // Body + 1, // Root 2, // StatementBlock 3, // Statement 4, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S1 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S2 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S3 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S4 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName 7, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S5 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S6 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock 9, // Statement 4, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S7 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - 10, // Number + 10, // AtomOrFunction }, gotoRow{ // S8 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S9 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S10 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction }, gotoRow{ // S11 -1, // S' - -1, // Body + -1, // Root -1, // StatementBlock -1, // Statement -1, // FieldName -1, // Assign - -1, // Number + -1, // AtomOrFunction + }, + gotoRow{ // S12 + -1, // S' + -1, // Root + -1, // StatementBlock + -1, // Statement + -1, // FieldName + -1, // Assign + -1, // AtomOrFunction + }, + gotoRow{ // S13 + -1, // S' + -1, // Root + -1, // StatementBlock + -1, // Statement + -1, // FieldName + -1, // Assign + -1, // AtomOrFunction + }, + gotoRow{ // S14 + -1, // S' + -1, // Root + -1, // StatementBlock + -1, // Statement + -1, // FieldName + -1, // Assign + -1, // AtomOrFunction }, } diff --git a/go/src/miller/parsing/parser/parser.go b/go/src/miller/parsing/parser/parser.go index 720afadc8..3f92eb2e3 100644 --- a/go/src/miller/parsing/parser/parser.go +++ b/go/src/miller/parsing/parser/parser.go @@ -11,9 +11,9 @@ import ( ) const ( - numProductions = 8 - numStates = 12 - numSymbols = 13 + numProductions = 12 + numStates = 15 + numSymbols = 15 ) // Stack diff --git a/go/src/miller/parsing/parser/productionstable.go b/go/src/miller/parsing/parser/productionstable.go index 9f23377de..58e104382 100644 --- a/go/src/miller/parsing/parser/productionstable.go +++ b/go/src/miller/parsing/parser/productionstable.go @@ -21,7 +21,7 @@ type ( var productionsTable = ProdTab{ ProdTabEntry{ - String: `S' : Body << >>`, + String: `S' : Root << >>`, Id: "S'", NTType: 0, Index: 0, @@ -31,8 +31,8 @@ var productionsTable = ProdTab{ }, }, ProdTabEntry{ - String: `Body : StatementBlock << dsl.NewAST(X[0]) >>`, - Id: "Body", + String: `Root : StatementBlock << dsl.NewAST(X[0]) >>`, + Id: "Root", NTType: 1, Index: 1, NumSymbols: 1, @@ -51,53 +51,93 @@ var productionsTable = ProdTab{ }, }, ProdTabEntry{ - String: `StatementBlock : StatementBlock md_semicolon Statement << dsl.AppendChild(X[0], X[2]) >>`, + String: `StatementBlock : StatementBlock ";" << dsl.PairNil(X[0]) >>`, Id: "StatementBlock", NTType: 2, Index: 3, + NumSymbols: 2, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return dsl.PairNil(X[0]) + }, + }, + ProdTabEntry{ + String: `StatementBlock : StatementBlock ";" Statement << dsl.AppendChild(X[0], X[2]) >>`, + Id: "StatementBlock", + NTType: 2, + Index: 4, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return dsl.AppendChild(X[0], X[2]) }, }, ProdTabEntry{ - String: `Statement : FieldName Assign Number << dsl.MakeBinary(X[1], X[0], X[2]) >>`, + String: `Statement : FieldName Assign AtomOrFunction << dsl.MakeBinary(X[1], X[0], X[2]) >>`, Id: "Statement", NTType: 3, - Index: 4, + Index: 5, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return dsl.MakeBinary(X[1], X[0], X[2]) }, }, ProdTabEntry{ - String: `FieldName : md_token_field_name << dsl.NewASTNode(X[0], dsl.NodeTypeLeaf) >>`, + String: `FieldName : md_token_field_name << dsl.NewASTNode(X[0], dsl.NodeTypeToken) >>`, Id: "FieldName", NTType: 4, - Index: 5, - NumSymbols: 1, - ReduceFunc: func(X []Attrib) (Attrib, error) { - return dsl.NewASTNode(X[0], dsl.NodeTypeLeaf) - }, - }, - ProdTabEntry{ - String: `Assign : md_token_assign << dsl.NewASTNode(X[0], dsl.NodeTypeLeaf) >>`, - Id: "Assign", - NTType: 5, Index: 6, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return dsl.NewASTNode(X[0], dsl.NodeTypeLeaf) + return dsl.NewASTNode(X[0], dsl.NodeTypeToken) }, }, ProdTabEntry{ - String: `Number : md_token_number << dsl.NewASTNode(X[0], dsl.NodeTypeLeaf) >>`, - Id: "Number", - NTType: 6, + String: `Assign : md_token_assign << dsl.NewASTNode(X[0], dsl.NodeTypeToken) >>`, + Id: "Assign", + NTType: 5, Index: 7, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { - return dsl.NewASTNode(X[0], dsl.NodeTypeLeaf) + return dsl.NewASTNode(X[0], dsl.NodeTypeToken) + }, + }, + ProdTabEntry{ + String: `AtomOrFunction : md_token_field_name << dsl.NewASTNode(X[0], dsl.NodeTypeToken) >>`, + Id: "AtomOrFunction", + NTType: 6, + Index: 8, + NumSymbols: 1, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return dsl.NewASTNode(X[0], dsl.NodeTypeToken) + }, + }, + ProdTabEntry{ + String: `AtomOrFunction : md_token_number << dsl.NewASTNode(X[0], dsl.NodeTypeToken) >>`, + Id: "AtomOrFunction", + NTType: 6, + Index: 9, + NumSymbols: 1, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return dsl.NewASTNode(X[0], dsl.NodeTypeToken) + }, + }, + ProdTabEntry{ + String: `AtomOrFunction : "true" << dsl.NewASTNode(X[0], dsl.NodeTypeToken) >>`, + Id: "AtomOrFunction", + NTType: 6, + Index: 10, + NumSymbols: 1, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return dsl.NewASTNode(X[0], dsl.NodeTypeToken) + }, + }, + ProdTabEntry{ + String: `AtomOrFunction : "false" << dsl.NewASTNode(X[0], dsl.NodeTypeToken) >>`, + Id: "AtomOrFunction", + NTType: 6, + Index: 11, + NumSymbols: 1, + ReduceFunc: func(X []Attrib) (Attrib, error) { + return dsl.NewASTNode(X[0], dsl.NodeTypeToken) }, }, } diff --git a/go/src/miller/parsing/token/token.go b/go/src/miller/parsing/token/token.go index 4ec01cd13..0800b1416 100644 --- a/go/src/miller/parsing/token/token.go +++ b/go/src/miller/parsing/token/token.go @@ -121,18 +121,22 @@ var TokMap = TokenMap{ typeMap: []string{ "INVALID", "$", - "md_semicolon", + ";", "md_token_field_name", "md_token_assign", "md_token_number", + "true", + "false", }, idMap: map[string]Type{ "INVALID": 0, "$": 1, - "md_semicolon": 2, + ";": 2, "md_token_field_name": 3, "md_token_assign": 4, "md_token_number": 5, + "true": 6, + "false": 7, }, }