mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-25 08:53:55 +00:00
DSL name-shortens
This commit is contained in:
parent
c7cb1274e8
commit
95e997cbc3
7 changed files with 375 additions and 375 deletions
|
|
@ -125,23 +125,23 @@ void mlr_dsl_ast_node_print(mlr_dsl_ast_node_t* pnode) {
|
|||
// ----------------------------------------------------------------
|
||||
char* mlr_dsl_ast_node_describe_type(int type) {
|
||||
switch(type) {
|
||||
case MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL: return "strnum_literal"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_BOOLEAN_LITERAL: return "boolean_literal"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_REGEXI: return "regexi"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_FIELD_NAME: return "field_name"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_OOSVAR_NAME: return "oosvar_name"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_MOOSVAR_NAME: return "moosvar_name"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_MOOSVAR_INDEX: return "moosvar_index"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME: return "function_name"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_OPERATOR: return "operator"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_SREC_ASSIGNMENT: return "srec_assignment"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_OOSVAR_ASSIGNMENT: return "oosvar_assignment"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_MOOSVAR_ASSIGNMENT: return "moosvar_assignment"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE: return "context_variable"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY: return "stripped_away"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_FILTER: return "filter"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_GATE: return "gate"; break;
|
||||
case MLR_DSL_AST_NODE_TYPE_EMIT: return "emit"; break;
|
||||
case MD_AST_NODE_TYPE_STRNUM_LITERAL: return "strnum_literal"; break;
|
||||
case MD_AST_NODE_TYPE_BOOLEAN_LITERAL: return "boolean_literal"; break;
|
||||
case MD_AST_NODE_TYPE_REGEXI: return "regexi"; break;
|
||||
case MD_AST_NODE_TYPE_FIELD_NAME: return "field_name"; break;
|
||||
case MD_AST_NODE_TYPE_OOSVAR_NAME: return "oosvar_name"; break;
|
||||
case MD_AST_NODE_TYPE_MOOSVAR_NAME: return "moosvar_name"; break;
|
||||
case MD_AST_NODE_TYPE_MOOSVAR_INDEX: return "moosvar_index"; break;
|
||||
case MD_AST_NODE_TYPE_FUNCTION_NAME: return "function_name"; break;
|
||||
case MD_AST_NODE_TYPE_OPERATOR: return "operator"; break;
|
||||
case MD_AST_NODE_TYPE_SREC_ASSIGNMENT: return "srec_assignment"; break;
|
||||
case MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT: return "oosvar_assignment"; break;
|
||||
case MD_AST_NODE_TYPE_MOOSVAR_ASSIGNMENT: return "moosvar_assignment"; break;
|
||||
case MD_AST_NODE_TYPE_CONTEXT_VARIABLE: return "context_variable"; break;
|
||||
case MD_AST_NODE_TYPE_STRIPPED_AWAY: return "stripped_away"; break;
|
||||
case MD_AST_NODE_TYPE_FILTER: return "filter"; break;
|
||||
case MD_AST_NODE_TYPE_GATE: return "gate"; break;
|
||||
case MD_AST_NODE_TYPE_EMIT: return "emit"; break;
|
||||
default: return "???";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,23 +6,23 @@
|
|||
#define MLR_DSL_AST_H
|
||||
#include "sllv.h"
|
||||
|
||||
#define MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL 0xda00
|
||||
#define MLR_DSL_AST_NODE_TYPE_BOOLEAN_LITERAL 0xda11
|
||||
#define MLR_DSL_AST_NODE_TYPE_REGEXI 0xda22
|
||||
#define MLR_DSL_AST_NODE_TYPE_FIELD_NAME 0xda33
|
||||
#define MLR_DSL_AST_NODE_TYPE_OOSVAR_NAME 0xda44
|
||||
#define MLR_DSL_AST_NODE_TYPE_MOOSVAR_NAME 0xda55
|
||||
#define MLR_DSL_AST_NODE_TYPE_MOOSVAR_INDEX 0xda5c
|
||||
#define MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME 0xda66
|
||||
#define MLR_DSL_AST_NODE_TYPE_OPERATOR 0xda77
|
||||
#define MLR_DSL_AST_NODE_TYPE_SREC_ASSIGNMENT 0xda88
|
||||
#define MLR_DSL_AST_NODE_TYPE_OOSVAR_ASSIGNMENT 0xda99
|
||||
#define MLR_DSL_AST_NODE_TYPE_MOOSVAR_ASSIGNMENT 0xdaaa
|
||||
#define MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE 0xdabb
|
||||
#define MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY 0xdacc
|
||||
#define MLR_DSL_AST_NODE_TYPE_FILTER 0xdadd
|
||||
#define MLR_DSL_AST_NODE_TYPE_GATE 0xdaee
|
||||
#define MLR_DSL_AST_NODE_TYPE_EMIT 0xdaff
|
||||
#define MD_AST_NODE_TYPE_STRNUM_LITERAL 0xda00
|
||||
#define MD_AST_NODE_TYPE_BOOLEAN_LITERAL 0xda11
|
||||
#define MD_AST_NODE_TYPE_REGEXI 0xda22
|
||||
#define MD_AST_NODE_TYPE_FIELD_NAME 0xda33
|
||||
#define MD_AST_NODE_TYPE_OOSVAR_NAME 0xda44
|
||||
#define MD_AST_NODE_TYPE_MOOSVAR_NAME 0xda55
|
||||
#define MD_AST_NODE_TYPE_MOOSVAR_INDEX 0xda5c
|
||||
#define MD_AST_NODE_TYPE_FUNCTION_NAME 0xda66
|
||||
#define MD_AST_NODE_TYPE_OPERATOR 0xda77
|
||||
#define MD_AST_NODE_TYPE_SREC_ASSIGNMENT 0xda88
|
||||
#define MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT 0xda99
|
||||
#define MD_AST_NODE_TYPE_MOOSVAR_ASSIGNMENT 0xdaaa
|
||||
#define MD_AST_NODE_TYPE_CONTEXT_VARIABLE 0xdabb
|
||||
#define MD_AST_NODE_TYPE_STRIPPED_AWAY 0xdacc
|
||||
#define MD_AST_NODE_TYPE_FILTER 0xdadd
|
||||
#define MD_AST_NODE_TYPE_GATE 0xdaee
|
||||
#define MD_AST_NODE_TYPE_EMIT 0xdaff
|
||||
|
||||
typedef struct _mlr_dsl_ast_t {
|
||||
sllv_t* pbegin_statements;
|
||||
|
|
|
|||
|
|
@ -12,217 +12,217 @@
|
|||
|
||||
%%
|
||||
";" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_SEMICOLON;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_SEMICOLON;
|
||||
}
|
||||
"{" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_LEFT_BRACE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_LEFT_BRACE;
|
||||
}
|
||||
"}" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_RIGHT_BRACE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_RIGHT_BRACE;
|
||||
}
|
||||
|
||||
"=" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_SREC_ASSIGNMENT);
|
||||
return MLR_DSL_ASSIGN;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_SREC_ASSIGNMENT);
|
||||
return MD_TOKEN_ASSIGN;
|
||||
}
|
||||
|
||||
"filter" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FILTER);
|
||||
return MLR_DSL_FILTER;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_FILTER);
|
||||
return MD_TOKEN_FILTER;
|
||||
}
|
||||
"gate" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_GATE);
|
||||
return MLR_DSL_GATE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_GATE);
|
||||
return MD_TOKEN_GATE;
|
||||
}
|
||||
"emit" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_EMIT);
|
||||
return MLR_DSL_EMIT;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_EMIT);
|
||||
return MD_TOKEN_EMIT;
|
||||
}
|
||||
"begin" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_BEGIN;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_BEGIN;
|
||||
}
|
||||
"end" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_END;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_END;
|
||||
}
|
||||
|
||||
"?" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_QUESTION_MARK;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_QUESTION_MARK;
|
||||
}
|
||||
|
||||
":" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_COLON;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_COLON;
|
||||
}
|
||||
|
||||
"||" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_LOGICAL_OR;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_LOGICAL_OR;
|
||||
}
|
||||
"^^" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_LOGICAL_XOR;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_LOGICAL_XOR;
|
||||
}
|
||||
"&&" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_LOGICAL_AND;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_LOGICAL_AND;
|
||||
}
|
||||
|
||||
"=~" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_MATCHES;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_MATCHES;
|
||||
}
|
||||
"!=~" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_DOES_NOT_MATCH;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_DOES_NOT_MATCH;
|
||||
}
|
||||
"==" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_EQ;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_EQ;
|
||||
}
|
||||
"!=" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_NE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_NE;
|
||||
}
|
||||
|
||||
">" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_GT;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_GT;
|
||||
}
|
||||
">=" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_GE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_GE;
|
||||
}
|
||||
"<" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_LT;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_LT;
|
||||
}
|
||||
"<=" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_LE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_LE;
|
||||
}
|
||||
|
||||
"|" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_BITWISE_OR;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_BITWISE_OR;
|
||||
}
|
||||
|
||||
"^" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_BITWISE_XOR;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_BITWISE_XOR;
|
||||
}
|
||||
|
||||
"&" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_BITWISE_AND;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_BITWISE_AND;
|
||||
}
|
||||
|
||||
"<<" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_BITWISE_LSH;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_BITWISE_LSH;
|
||||
}
|
||||
">>" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_BITWISE_RSH;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_BITWISE_RSH;
|
||||
}
|
||||
|
||||
"+" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_PLUS;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_PLUS;
|
||||
}
|
||||
"-" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_MINUS;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_MINUS;
|
||||
}
|
||||
"\." {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_DOT;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_DOT;
|
||||
}
|
||||
|
||||
"*" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_TIMES;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_TIMES;
|
||||
}
|
||||
"/" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_DIVIDE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_DIVIDE;
|
||||
}
|
||||
"//" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_INT_DIVIDE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_INT_DIVIDE;
|
||||
}
|
||||
"%" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_MOD;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_MOD;
|
||||
}
|
||||
|
||||
"!" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_LOGICAL_NOT;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_LOGICAL_NOT;
|
||||
}
|
||||
|
||||
"~" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_BITWISE_NOT;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_BITWISE_NOT;
|
||||
}
|
||||
|
||||
"**" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OPERATOR);
|
||||
return MLR_DSL_POW;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OPERATOR);
|
||||
return MD_TOKEN_POW;
|
||||
}
|
||||
|
||||
\$[a-zA-Z_0-9]+ {
|
||||
// Note: the parser depends on the dollar sign being here. If this is changed,
|
||||
// that needs to be changed as well.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FIELD_NAME);
|
||||
return MLR_DSL_FIELD_NAME;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_FIELD_NAME);
|
||||
return MD_TOKEN_FIELD_NAME;
|
||||
}
|
||||
\$\{([^\}]|\\.)*\} {
|
||||
// Note: the parser depends on the dollar sign being here. If this is changed,
|
||||
// that needs to be changed as well.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FIELD_NAME);
|
||||
return MLR_DSL_BRACED_FIELD_NAME;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_FIELD_NAME);
|
||||
return MD_TOKEN_BRACED_FIELD_NAME;
|
||||
}
|
||||
|
||||
@[a-zA-Z_0-9]+ {
|
||||
// Note: the parser depends on the at-sign being here. If this is changed,
|
||||
// that needs to be changed as well.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OOSVAR_NAME);
|
||||
return MLR_DSL_OOSVAR_NAME;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OOSVAR_NAME);
|
||||
return MD_TOKEN_OOSVAR_NAME;
|
||||
}
|
||||
@\{([^\}]|\\.)*\} {
|
||||
// Note: the parser depends on the at-sign being here. If this is changed,
|
||||
// that needs to be changed as well.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_OOSVAR_NAME);
|
||||
return MLR_DSL_BRACED_OOSVAR_NAME;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_OOSVAR_NAME);
|
||||
return MD_TOKEN_BRACED_OOSVAR_NAME;
|
||||
}
|
||||
|
||||
@@[a-zA-Z_0-9]+ {
|
||||
// xxx moosvars are just temporary
|
||||
// Note: the parser depends on the percent-sign being here. If this is changed,
|
||||
// that needs to be changed as well.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_MOOSVAR_NAME);
|
||||
return MLR_DSL_MOOSVAR_NAME;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_MOOSVAR_NAME);
|
||||
return MD_TOKEN_MOOSVAR_NAME;
|
||||
}
|
||||
@@\{([^\}]|\\.)*\} {
|
||||
// xxx moosvars are just temporary
|
||||
// Note: the parser depends on the percent-sign being here. If this is changed,
|
||||
// that needs to be changed as well.
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_MOOSVAR_NAME);
|
||||
return MLR_DSL_BRACED_MOOSVAR_NAME;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_MOOSVAR_NAME);
|
||||
return MD_TOKEN_BRACED_MOOSVAR_NAME;
|
||||
}
|
||||
"\[" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_LEFT_BRACKET;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_LEFT_BRACKET;
|
||||
}
|
||||
"\]" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_RIGHT_BRACKET;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_RIGHT_BRACKET;
|
||||
}
|
||||
|
||||
[0-9]+|[0-9]+\.[0-9]*|[0-9]*\.[0-9]+|[0-9]+[eE][0-9]+|[0-9]+[eE]-[0-9]+|[0-9]+\.[0-9]*[eE][0-9]+|[0-9]+\.[0-9]*[eE]-[0-9]+|[0-9]*\.[0-9]+[eE][0-9]+|[0-9]*\.[0-9]+[eE]-[0-9]+ {
|
||||
|
|
@ -236,79 +236,79 @@
|
|||
// 1.2e-3 1.e-3
|
||||
// .2e3
|
||||
// .2e-3 1.e-3
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
return MLR_DSL_NUMBER;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
return MD_TOKEN_NUMBER;
|
||||
}
|
||||
0x[0-9a-fA-F]+ {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
return MLR_DSL_NUMBER;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
return MD_TOKEN_NUMBER;
|
||||
}
|
||||
|
||||
\"([^\\\"]|\\.)*\" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
return MLR_DSL_STRING;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
return MD_TOKEN_STRING;
|
||||
}
|
||||
|
||||
\"([^\\\"]|\\.)*\"\i {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_REGEXI);
|
||||
return MLR_DSL_REGEXI;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_REGEXI);
|
||||
return MD_TOKEN_REGEXI;
|
||||
}
|
||||
|
||||
true {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_BOOLEAN_LITERAL);
|
||||
return MLR_DSL_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, MLR_DSL_AST_NODE_TYPE_BOOLEAN_LITERAL);
|
||||
return MLR_DSL_FALSE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_BOOLEAN_LITERAL);
|
||||
return MD_TOKEN_FALSE;
|
||||
}
|
||||
|
||||
"NF" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MLR_DSL_CONTEXT_VARIABLE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MD_TOKEN_CONTEXT_VARIABLE;
|
||||
}
|
||||
"NR" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MLR_DSL_CONTEXT_VARIABLE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MD_TOKEN_CONTEXT_VARIABLE;
|
||||
}
|
||||
"FNR" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MLR_DSL_CONTEXT_VARIABLE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MD_TOKEN_CONTEXT_VARIABLE;
|
||||
}
|
||||
"FILENAME" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MLR_DSL_CONTEXT_VARIABLE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MD_TOKEN_CONTEXT_VARIABLE;
|
||||
}
|
||||
"FILENUM" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MLR_DSL_CONTEXT_VARIABLE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MD_TOKEN_CONTEXT_VARIABLE;
|
||||
}
|
||||
"PI" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MLR_DSL_CONTEXT_VARIABLE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MD_TOKEN_CONTEXT_VARIABLE;
|
||||
}
|
||||
"E" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MLR_DSL_CONTEXT_VARIABLE;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_CONTEXT_VARIABLE);
|
||||
return MD_TOKEN_CONTEXT_VARIABLE;
|
||||
}
|
||||
|
||||
[a-zA-Z_][a-zA-Z_0-9]+ {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
return MLR_DSL_FCN_NAME;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
return MD_TOKEN_FCN_NAME;
|
||||
}
|
||||
|
||||
"(" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_LPAREN;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_LPAREN;
|
||||
}
|
||||
")" {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_RPAREN;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_RPAREN;
|
||||
}
|
||||
|
||||
"," {
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MLR_DSL_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MLR_DSL_COMMA;
|
||||
*yyextra = mlr_dsl_ast_node_alloc(yytext, MD_AST_NODE_TYPE_STRIPPED_AWAY);
|
||||
return MD_TOKEN_COMMA;
|
||||
}
|
||||
|
||||
[ \t\r\n] { }
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
// * parens, commas, semis, 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 the mlr_dsl_cst.c
|
||||
// CST: See the md_cst.c
|
||||
// ================================================================
|
||||
|
||||
}
|
||||
|
|
@ -37,95 +37,95 @@
|
|||
}
|
||||
|
||||
// ================================================================
|
||||
mlr_dsl_body ::= mlr_dsl_statements.
|
||||
md_body ::= md_statements.
|
||||
|
||||
mlr_dsl_statements ::= mlr_dsl_statement.
|
||||
mlr_dsl_statements ::= mlr_dsl_statement MLR_DSL_SEMICOLON mlr_dsl_statements.
|
||||
md_statements ::= md_statement.
|
||||
md_statements ::= md_statement MD_TOKEN_SEMICOLON md_statements.
|
||||
|
||||
// This allows for trailing semicolon, as well as empty string (or whitespace) between semicolons:
|
||||
mlr_dsl_statement ::= .
|
||||
md_statement ::= .
|
||||
|
||||
mlr_dsl_statement ::= mlr_dsl_main_srec_assignment.
|
||||
mlr_dsl_statement ::= mlr_dsl_main_oosvar_assignment.
|
||||
mlr_dsl_statement ::= mlr_dsl_main_bare_boolean.
|
||||
mlr_dsl_statement ::= mlr_dsl_main_filter.
|
||||
mlr_dsl_statement ::= mlr_dsl_main_gate.
|
||||
mlr_dsl_statement ::= mlr_dsl_main_emit.
|
||||
md_statement ::= md_main_srec_assignment.
|
||||
md_statement ::= md_main_oosvar_assignment.
|
||||
md_statement ::= md_main_bare_boolean.
|
||||
md_statement ::= md_main_filter.
|
||||
md_statement ::= md_main_gate.
|
||||
md_statement ::= md_main_emit.
|
||||
|
||||
// E.g. 'begin { emit @count }'
|
||||
mlr_dsl_statement ::= mlr_dsl_begin_block.
|
||||
md_statement ::= md_begin_block.
|
||||
// E.g. 'begin emit @count'
|
||||
mlr_dsl_statement ::= mlr_dsl_begin_solo_oosvar_assignment.
|
||||
mlr_dsl_statement ::= mlr_dsl_begin_solo_bare_boolean.
|
||||
mlr_dsl_statement ::= mlr_dsl_begin_solo_filter.
|
||||
mlr_dsl_statement ::= mlr_dsl_begin_solo_gate.
|
||||
mlr_dsl_statement ::= mlr_dsl_begin_solo_emit.
|
||||
md_statement ::= md_begin_solo_oosvar_assignment.
|
||||
md_statement ::= md_begin_solo_bare_boolean.
|
||||
md_statement ::= md_begin_solo_filter.
|
||||
md_statement ::= md_begin_solo_gate.
|
||||
md_statement ::= md_begin_solo_emit.
|
||||
|
||||
// E.g. 'end { emit @count }'
|
||||
mlr_dsl_statement ::= mlr_dsl_end_block.
|
||||
md_statement ::= md_end_block.
|
||||
// E.g. 'end emit @count'
|
||||
mlr_dsl_statement ::= mlr_dsl_end_solo_oosvar_assignment.
|
||||
mlr_dsl_statement ::= mlr_dsl_end_solo_bare_boolean.
|
||||
mlr_dsl_statement ::= mlr_dsl_end_solo_filter.
|
||||
mlr_dsl_statement ::= mlr_dsl_end_solo_gate.
|
||||
mlr_dsl_statement ::= mlr_dsl_end_solo_emit.
|
||||
md_statement ::= md_end_solo_oosvar_assignment.
|
||||
md_statement ::= md_end_solo_bare_boolean.
|
||||
md_statement ::= md_end_solo_filter.
|
||||
md_statement ::= md_end_solo_gate.
|
||||
md_statement ::= md_end_solo_emit.
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// This looks redundant to the above, but it avoids having pathologies such as nested 'begin { begin { ... } }'.
|
||||
|
||||
mlr_dsl_begin_block ::= MLR_DSL_BEGIN MLR_DSL_LEFT_BRACE mlr_dsl_begin_block_statements MLR_DSL_RIGHT_BRACE.
|
||||
md_begin_block ::= MD_TOKEN_BEGIN MD_TOKEN_LEFT_BRACE md_begin_block_statements MD_TOKEN_RIGHT_BRACE.
|
||||
|
||||
mlr_dsl_begin_block_statements ::= mlr_dsl_begin_block_statement.
|
||||
mlr_dsl_begin_block_statements ::= mlr_dsl_begin_block_statement MLR_DSL_SEMICOLON mlr_dsl_begin_block_statements.
|
||||
md_begin_block_statements ::= md_begin_block_statement.
|
||||
md_begin_block_statements ::= md_begin_block_statement MD_TOKEN_SEMICOLON md_begin_block_statements.
|
||||
|
||||
// This allows for trailing semicolon, as well as empty string (or whitespace) between semicolons:
|
||||
mlr_dsl_begin_block_statement ::= .
|
||||
mlr_dsl_begin_block_statement ::= mlr_dsl_begin_block_oosvar_assignment.
|
||||
mlr_dsl_begin_block_statement ::= mlr_dsl_begin_block_moosvar_assignment.
|
||||
mlr_dsl_begin_block_statement ::= mlr_dsl_begin_block_moosvar_temp.
|
||||
mlr_dsl_begin_block_statement ::= mlr_dsl_begin_block_bare_boolean.
|
||||
mlr_dsl_begin_block_statement ::= mlr_dsl_begin_block_filter.
|
||||
mlr_dsl_begin_block_statement ::= mlr_dsl_begin_block_gate.
|
||||
mlr_dsl_begin_block_statement ::= mlr_dsl_begin_block_emit.
|
||||
md_begin_block_statement ::= .
|
||||
md_begin_block_statement ::= md_begin_block_oosvar_assignment.
|
||||
md_begin_block_statement ::= md_begin_block_moosvar_assignment.
|
||||
md_begin_block_statement ::= md_begin_block_moosvar_temp.
|
||||
md_begin_block_statement ::= md_begin_block_bare_boolean.
|
||||
md_begin_block_statement ::= md_begin_block_filter.
|
||||
md_begin_block_statement ::= md_begin_block_gate.
|
||||
md_begin_block_statement ::= md_begin_block_emit.
|
||||
|
||||
mlr_dsl_end_block ::= MLR_DSL_END MLR_DSL_LEFT_BRACE mlr_dsl_end_block_statements MLR_DSL_RIGHT_BRACE.
|
||||
md_end_block ::= MD_TOKEN_END MD_TOKEN_LEFT_BRACE md_end_block_statements MD_TOKEN_RIGHT_BRACE.
|
||||
|
||||
mlr_dsl_end_block_statements ::= mlr_dsl_end_block_statement.
|
||||
mlr_dsl_end_block_statements ::= mlr_dsl_end_block_statement MLR_DSL_SEMICOLON mlr_dsl_end_block_statements.
|
||||
md_end_block_statements ::= md_end_block_statement.
|
||||
md_end_block_statements ::= md_end_block_statement MD_TOKEN_SEMICOLON md_end_block_statements.
|
||||
|
||||
// This allows for trailing semicolon, as well as empty string (or whitespace) between semicolons:
|
||||
mlr_dsl_end_block_statement ::= .
|
||||
mlr_dsl_end_block_statement ::= mlr_dsl_end_block_oosvar_assignment.
|
||||
mlr_dsl_end_block_statement ::= mlr_dsl_end_block_bare_boolean.
|
||||
mlr_dsl_end_block_statement ::= mlr_dsl_end_block_filter.
|
||||
mlr_dsl_end_block_statement ::= mlr_dsl_end_block_gate.
|
||||
mlr_dsl_end_block_statement ::= mlr_dsl_end_block_emit.
|
||||
md_end_block_statement ::= .
|
||||
md_end_block_statement ::= md_end_block_oosvar_assignment.
|
||||
md_end_block_statement ::= md_end_block_bare_boolean.
|
||||
md_end_block_statement ::= md_end_block_filter.
|
||||
md_end_block_statement ::= md_end_block_gate.
|
||||
md_end_block_statement ::= md_end_block_emit.
|
||||
|
||||
|
||||
// ================================================================
|
||||
// These are top-level; they update the AST top-level statement-lists.
|
||||
|
||||
mlr_dsl_main_srec_assignment(A) ::= mlr_dsl_field_name(B) MLR_DSL_ASSIGN(O) mlr_dsl_ternary(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_SREC_ASSIGNMENT, B, C);
|
||||
md_main_srec_assignment(A) ::= md_field_name(B) MD_TOKEN_ASSIGN(O) md_ternary(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_SREC_ASSIGNMENT, B, C);
|
||||
sllv_add(past->pmain_statements, A);
|
||||
}
|
||||
mlr_dsl_main_oosvar_assignment(A) ::= mlr_dsl_oosvar_assignment(B). {
|
||||
md_main_oosvar_assignment(A) ::= md_oosvar_assignment(B). {
|
||||
A = B;
|
||||
sllv_add(past->pmain_statements, A);
|
||||
}
|
||||
mlr_dsl_main_bare_boolean(A) ::= mlr_dsl_ternary(B). {
|
||||
md_main_bare_boolean(A) ::= md_ternary(B). {
|
||||
A = B;
|
||||
sllv_add(past->pmain_statements, A);
|
||||
}
|
||||
mlr_dsl_main_filter(A) ::= MLR_DSL_FILTER(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_FILTER, B);
|
||||
md_main_filter(A) ::= MD_TOKEN_FILTER(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_FILTER, B);
|
||||
sllv_add(past->pmain_statements, A);
|
||||
}
|
||||
mlr_dsl_main_gate(A) ::= MLR_DSL_GATE(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_GATE, B);
|
||||
md_main_gate(A) ::= MD_TOKEN_GATE(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_GATE, B);
|
||||
sllv_add(past->pmain_statements, A);
|
||||
}
|
||||
mlr_dsl_main_emit(A) ::= mlr_dsl_emit(B). {
|
||||
md_main_emit(A) ::= md_emit(B). {
|
||||
A = B;
|
||||
sllv_add(past->pmain_statements, A);
|
||||
}
|
||||
|
|
@ -133,28 +133,28 @@ mlr_dsl_main_emit(A) ::= mlr_dsl_emit(B). {
|
|||
// ----------------------------------------------------------------
|
||||
// These are top-level; they update the AST top-level statement-lists.
|
||||
|
||||
mlr_dsl_begin_solo_oosvar_assignment(A) ::= MLR_DSL_BEGIN mlr_dsl_oosvar_assignment(B). {
|
||||
md_begin_solo_oosvar_assignment(A) ::= MD_TOKEN_BEGIN md_oosvar_assignment(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_solo_bare_boolean(A) ::= MLR_DSL_BEGIN mlr_dsl_ternary(B). {
|
||||
md_begin_solo_bare_boolean(A) ::= MD_TOKEN_BEGIN md_ternary(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_solo_filter(A) ::= MLR_DSL_BEGIN MLR_DSL_FILTER(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_FILTER, B);
|
||||
md_begin_solo_filter(A) ::= MD_TOKEN_BEGIN MD_TOKEN_FILTER(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_FILTER, B);
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_solo_gate(A) ::= MLR_DSL_BEGIN MLR_DSL_GATE(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_GATE, B);
|
||||
md_begin_solo_gate(A) ::= MD_TOKEN_BEGIN MD_TOKEN_GATE(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_GATE, B);
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_solo_emit(A) ::= MLR_DSL_BEGIN mlr_dsl_emit(B). {
|
||||
md_begin_solo_emit(A) ::= MD_TOKEN_BEGIN md_emit(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
|
||||
mlr_dsl_begin_block_oosvar_assignment(A) ::= mlr_dsl_oosvar_assignment(B). {
|
||||
md_begin_block_oosvar_assignment(A) ::= md_oosvar_assignment(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
|
|
@ -162,36 +162,36 @@ mlr_dsl_begin_block_oosvar_assignment(A) ::= mlr_dsl_oosvar_assignment(B). {
|
|||
// oosvars work just fine; multi-level hashmaps (moosvars) don't *yet*.
|
||||
// so having @ for the former and @@ for the latter allows me to separate the working stuff
|
||||
// from the experimental.
|
||||
mlr_dsl_begin_block_moosvar_assignment(A) ::= mlr_dsl_moosvar_assignment(B). {
|
||||
md_begin_block_moosvar_assignment(A) ::= md_moosvar_assignment(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
|
||||
mlr_dsl_begin_block_moosvar_temp(A) ::= mlr_dsl_begin_block_moosvar_temp2(B). {
|
||||
md_begin_block_moosvar_temp(A) ::= md_begin_block_moosvar_temp2(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_block_moosvar_temp2(A) ::= mlr_dsl_moosvar_name(B) MLR_DSL_LEFT_BRACKET mlr_dsl_ternary(C) MLR_DSL_RIGHT_BRACKET. {
|
||||
A = mlr_dsl_ast_node_alloc_binary("[]", MLR_DSL_AST_NODE_TYPE_MOOSVAR_INDEX, B, C);
|
||||
md_begin_block_moosvar_temp2(A) ::= md_moosvar_name(B) MD_TOKEN_LEFT_BRACKET md_ternary(C) MD_TOKEN_RIGHT_BRACKET. {
|
||||
A = mlr_dsl_ast_node_alloc_binary("[]", MD_AST_NODE_TYPE_MOOSVAR_INDEX, B, C);
|
||||
}
|
||||
mlr_dsl_begin_block_moosvar_temp2(A) ::= mlr_dsl_begin_block_moosvar_temp2(B) MLR_DSL_LEFT_BRACKET mlr_dsl_ternary(C) MLR_DSL_RIGHT_BRACKET. {
|
||||
A = mlr_dsl_ast_node_alloc_binary("[]", MLR_DSL_AST_NODE_TYPE_MOOSVAR_INDEX, B, C);
|
||||
md_begin_block_moosvar_temp2(A) ::= md_begin_block_moosvar_temp2(B) MD_TOKEN_LEFT_BRACKET md_ternary(C) MD_TOKEN_RIGHT_BRACKET. {
|
||||
A = mlr_dsl_ast_node_alloc_binary("[]", MD_AST_NODE_TYPE_MOOSVAR_INDEX, B, C);
|
||||
}
|
||||
|
||||
|
||||
mlr_dsl_begin_block_bare_boolean(A) ::= mlr_dsl_ternary(B). {
|
||||
md_begin_block_bare_boolean(A) ::= md_ternary(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_block_filter(A) ::= MLR_DSL_FILTER(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_FILTER, B);
|
||||
md_begin_block_filter(A) ::= MD_TOKEN_FILTER(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_FILTER, B);
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_block_gate(A) ::= MLR_DSL_GATE(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_GATE, B);
|
||||
md_begin_block_gate(A) ::= MD_TOKEN_GATE(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_GATE, B);
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
mlr_dsl_begin_block_emit(A) ::= mlr_dsl_emit(B). {
|
||||
md_begin_block_emit(A) ::= md_emit(B). {
|
||||
A = B;
|
||||
sllv_add(past->pbegin_statements, A);
|
||||
}
|
||||
|
|
@ -199,54 +199,54 @@ mlr_dsl_begin_block_emit(A) ::= mlr_dsl_emit(B). {
|
|||
// ----------------------------------------------------------------
|
||||
// These are top-level; they update the AST top-level statement-lists.
|
||||
|
||||
mlr_dsl_end_solo_oosvar_assignment(A) ::= MLR_DSL_END mlr_dsl_oosvar_assignment(B). {
|
||||
md_end_solo_oosvar_assignment(A) ::= MD_TOKEN_END md_oosvar_assignment(B). {
|
||||
A = B;
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_solo_bare_boolean(A) ::= MLR_DSL_END mlr_dsl_ternary(B). {
|
||||
md_end_solo_bare_boolean(A) ::= MD_TOKEN_END md_ternary(B). {
|
||||
A = B;
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_solo_filter(A) ::= MLR_DSL_END MLR_DSL_FILTER(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_FILTER, B);
|
||||
md_end_solo_filter(A) ::= MD_TOKEN_END MD_TOKEN_FILTER(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_FILTER, B);
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_solo_gate(A) ::= MLR_DSL_END MLR_DSL_GATE(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_GATE, B);
|
||||
md_end_solo_gate(A) ::= MD_TOKEN_END MD_TOKEN_GATE(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_GATE, B);
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_solo_emit(A) ::= MLR_DSL_END mlr_dsl_emit(B). {
|
||||
md_end_solo_emit(A) ::= MD_TOKEN_END md_emit(B). {
|
||||
A = B;
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
|
||||
mlr_dsl_end_block_oosvar_assignment(A) ::= mlr_dsl_oosvar_assignment(B). {
|
||||
md_end_block_oosvar_assignment(A) ::= md_oosvar_assignment(B). {
|
||||
A = B;
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_block_bare_boolean(A) ::= mlr_dsl_ternary(B). {
|
||||
md_end_block_bare_boolean(A) ::= md_ternary(B). {
|
||||
A = B;
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_block_filter(A) ::= MLR_DSL_FILTER(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_FILTER, B);
|
||||
md_end_block_filter(A) ::= MD_TOKEN_FILTER(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_FILTER, B);
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_block_gate(A) ::= MLR_DSL_GATE(O) mlr_dsl_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_GATE, B);
|
||||
md_end_block_gate(A) ::= MD_TOKEN_GATE(O) md_ternary(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_GATE, B);
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
mlr_dsl_end_block_emit(A) ::= mlr_dsl_emit(B). {
|
||||
md_end_block_emit(A) ::= md_emit(B). {
|
||||
A = B;
|
||||
sllv_add(past->pend_statements, A);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_oosvar_assignment(A) ::= mlr_dsl_oosvar_name(B) MLR_DSL_ASSIGN(O) mlr_dsl_ternary(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, C);
|
||||
md_oosvar_assignment(A) ::= md_oosvar_name(B) MD_TOKEN_ASSIGN(O) md_ternary(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT, B, C);
|
||||
}
|
||||
mlr_dsl_moosvar_assignment(A) ::= mlr_dsl_moosvar_name(B) MLR_DSL_ASSIGN(O) mlr_dsl_ternary(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_MOOSVAR_ASSIGNMENT, B, C);
|
||||
md_moosvar_assignment(A) ::= md_moosvar_name(B) MD_TOKEN_ASSIGN(O) md_ternary(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_MOOSVAR_ASSIGNMENT, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
|
|
@ -256,176 +256,176 @@ mlr_dsl_moosvar_assignment(A) ::= mlr_dsl_moosvar_name(B) MLR_DSL_ASSIGN(O) mlr
|
|||
// * On the "@b" we append the next argument to get "temp @a,@b".
|
||||
// * On the "@c" we append the next argument to get "temp @a,@b,@c".
|
||||
// * On the "emit" we change the name to get "emit @a,@b,@c".
|
||||
mlr_dsl_emit(A) ::= MLR_DSL_EMIT(O) mlr_dsl_emit_args(B). {
|
||||
md_emit(A) ::= MD_TOKEN_EMIT(O) md_emit_args(B). {
|
||||
A = mlr_dsl_ast_node_set_function_name(B, O->text);
|
||||
}
|
||||
// Need to invalidate "emit $a," -- use some non-empty-args expr.
|
||||
mlr_dsl_emit_args(A) ::= . {
|
||||
A = mlr_dsl_ast_node_alloc_zary("temp", MLR_DSL_AST_NODE_TYPE_EMIT);
|
||||
md_emit_args(A) ::= . {
|
||||
A = mlr_dsl_ast_node_alloc_zary("temp", MD_AST_NODE_TYPE_EMIT);
|
||||
}
|
||||
mlr_dsl_emit_args(A) ::= mlr_dsl_oosvar_name(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary("temp", MLR_DSL_AST_NODE_TYPE_EMIT, B);
|
||||
md_emit_args(A) ::= md_oosvar_name(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary("temp", MD_AST_NODE_TYPE_EMIT, B);
|
||||
}
|
||||
mlr_dsl_emit_args(A) ::= mlr_dsl_emit_args(B) MLR_DSL_COMMA mlr_dsl_oosvar_name(C). {
|
||||
md_emit_args(A) ::= md_emit_args(B) MD_TOKEN_COMMA md_oosvar_name(C). {
|
||||
A = mlr_dsl_ast_node_append_arg(B, C);
|
||||
}
|
||||
|
||||
// ================================================================
|
||||
mlr_dsl_ternary(A) ::= mlr_dsl_logical_or_term(B) MLR_DSL_QUESTION_MARK mlr_dsl_ternary(C) MLR_DSL_COLON mlr_dsl_ternary(D). {
|
||||
A = mlr_dsl_ast_node_alloc_ternary("? :", MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C, D);
|
||||
md_ternary(A) ::= md_logical_or_term(B) MD_TOKEN_QUESTION_MARK md_ternary(C) MD_TOKEN_COLON md_ternary(D). {
|
||||
A = mlr_dsl_ast_node_alloc_ternary("? :", MD_AST_NODE_TYPE_OPERATOR, B, C, D);
|
||||
}
|
||||
|
||||
mlr_dsl_ternary(A) ::= mlr_dsl_logical_or_term(B). {
|
||||
md_ternary(A) ::= md_logical_or_term(B). {
|
||||
A = B;
|
||||
}
|
||||
|
||||
// ================================================================
|
||||
mlr_dsl_logical_or_term(A) ::= mlr_dsl_logical_xor_term(B). {
|
||||
md_logical_or_term(A) ::= md_logical_xor_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_logical_or_term(A) ::= mlr_dsl_logical_or_term(B) MLR_DSL_LOGICAL_OR(O) mlr_dsl_logical_xor_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_logical_or_term(A) ::= md_logical_or_term(B) MD_TOKEN_LOGICAL_OR(O) md_logical_xor_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_logical_xor_term(A) ::= mlr_dsl_logical_and_term(B). {
|
||||
md_logical_xor_term(A) ::= md_logical_and_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_logical_xor_term(A) ::= mlr_dsl_logical_xor_term(B) MLR_DSL_LOGICAL_XOR(O) mlr_dsl_logical_and_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_logical_xor_term(A) ::= md_logical_xor_term(B) MD_TOKEN_LOGICAL_XOR(O) md_logical_and_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_logical_and_term(A) ::= mlr_dsl_eqne_term(B). {
|
||||
md_logical_and_term(A) ::= md_eqne_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_logical_and_term(A) ::= mlr_dsl_logical_and_term(B) MLR_DSL_LOGICAL_AND(O) mlr_dsl_eqne_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_logical_and_term(A) ::= md_logical_and_term(B) MD_TOKEN_LOGICAL_AND(O) md_eqne_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_eqne_term(A) ::= mlr_dsl_cmp_term(B). {
|
||||
md_eqne_term(A) ::= md_cmp_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_MATCHES(O) mlr_dsl_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_eqne_term(A) ::= md_eqne_term(B) MD_TOKEN_MATCHES(O) md_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_DOES_NOT_MATCH(O) mlr_dsl_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_eqne_term(A) ::= md_eqne_term(B) MD_TOKEN_DOES_NOT_MATCH(O) md_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_EQ(O) mlr_dsl_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_eqne_term(A) ::= md_eqne_term(B) MD_TOKEN_EQ(O) md_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_eqne_term(A) ::= mlr_dsl_eqne_term(B) MLR_DSL_NE(O) mlr_dsl_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_eqne_term(A) ::= md_eqne_term(B) MD_TOKEN_NE(O) md_cmp_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_cmp_term(A) ::= mlr_dsl_bitwise_or_term(B). {
|
||||
md_cmp_term(A) ::= md_bitwise_or_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_GT(O) mlr_dsl_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_cmp_term(A) ::= md_cmp_term(B) MD_TOKEN_GT(O) md_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_GE(O) mlr_dsl_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_cmp_term(A) ::= md_cmp_term(B) MD_TOKEN_GE(O) md_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_LT(O) mlr_dsl_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_cmp_term(A) ::= md_cmp_term(B) MD_TOKEN_LT(O) md_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_cmp_term(A) ::= mlr_dsl_cmp_term(B) MLR_DSL_LE(O) mlr_dsl_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_cmp_term(A) ::= md_cmp_term(B) MD_TOKEN_LE(O) md_bitwise_or_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_bitwise_or_term(A) ::= mlr_dsl_bitwise_xor_term(B). {
|
||||
md_bitwise_or_term(A) ::= md_bitwise_xor_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_bitwise_or_term(A) ::= mlr_dsl_bitwise_or_term(B) MLR_DSL_BITWISE_OR(O) mlr_dsl_bitwise_xor_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_bitwise_or_term(A) ::= md_bitwise_or_term(B) MD_TOKEN_BITWISE_OR(O) md_bitwise_xor_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_bitwise_xor_term(A) ::= mlr_dsl_bitwise_and_term(B). {
|
||||
md_bitwise_xor_term(A) ::= md_bitwise_and_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_bitwise_xor_term(A) ::= mlr_dsl_bitwise_xor_term(B) MLR_DSL_BITWISE_XOR(O) mlr_dsl_bitwise_and_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_bitwise_xor_term(A) ::= md_bitwise_xor_term(B) MD_TOKEN_BITWISE_XOR(O) md_bitwise_and_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_bitwise_and_term(A) ::= mlr_dsl_bitwise_shift_term(B). {
|
||||
md_bitwise_and_term(A) ::= md_bitwise_shift_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_bitwise_and_term(A) ::= mlr_dsl_bitwise_and_term(B) MLR_DSL_BITWISE_AND(O) mlr_dsl_bitwise_shift_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_bitwise_and_term(A) ::= md_bitwise_and_term(B) MD_TOKEN_BITWISE_AND(O) md_bitwise_shift_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_bitwise_shift_term(A) ::= mlr_dsl_addsubdot_term(B). {
|
||||
md_bitwise_shift_term(A) ::= md_addsubdot_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_bitwise_shift_term(A) ::= mlr_dsl_bitwise_shift_term(B) MLR_DSL_BITWISE_LSH(O) mlr_dsl_addsubdot_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_bitwise_shift_term(A) ::= md_bitwise_shift_term(B) MD_TOKEN_BITWISE_LSH(O) md_addsubdot_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_bitwise_shift_term(A) ::= mlr_dsl_bitwise_shift_term(B) MLR_DSL_BITWISE_RSH(O) mlr_dsl_addsubdot_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_bitwise_shift_term(A) ::= md_bitwise_shift_term(B) MD_TOKEN_BITWISE_RSH(O) md_addsubdot_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_addsubdot_term(A) ::= mlr_dsl_muldiv_term(B). {
|
||||
md_addsubdot_term(A) ::= md_muldiv_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_addsubdot_term(A) ::= mlr_dsl_addsubdot_term(B) MLR_DSL_PLUS(O) mlr_dsl_muldiv_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_addsubdot_term(A) ::= md_addsubdot_term(B) MD_TOKEN_PLUS(O) md_muldiv_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_addsubdot_term(A) ::= mlr_dsl_addsubdot_term(B) MLR_DSL_MINUS(O) mlr_dsl_muldiv_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_addsubdot_term(A) ::= md_addsubdot_term(B) MD_TOKEN_MINUS(O) md_muldiv_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_addsubdot_term(A) ::= mlr_dsl_addsubdot_term(B) MLR_DSL_DOT(O) mlr_dsl_muldiv_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_addsubdot_term(A) ::= md_addsubdot_term(B) MD_TOKEN_DOT(O) md_muldiv_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_muldiv_term(A) ::= mlr_dsl_unary_bitwise_op_term(B). {
|
||||
md_muldiv_term(A) ::= md_unary_bitwise_op_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_TIMES(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_muldiv_term(A) ::= md_muldiv_term(B) MD_TOKEN_TIMES(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_DIVIDE(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_muldiv_term(A) ::= md_muldiv_term(B) MD_TOKEN_DIVIDE(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_INT_DIVIDE(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_muldiv_term(A) ::= md_muldiv_term(B) MD_TOKEN_INT_DIVIDE(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
mlr_dsl_muldiv_term(A) ::= mlr_dsl_muldiv_term(B) MLR_DSL_MOD(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_muldiv_term(A) ::= md_muldiv_term(B) MD_TOKEN_MOD(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MD_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_unary_bitwise_op_term(A) ::= mlr_dsl_pow_term(B). {
|
||||
md_unary_bitwise_op_term(A) ::= md_pow_term(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_PLUS(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C);
|
||||
md_unary_bitwise_op_term(A) ::= MD_TOKEN_PLUS(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_OPERATOR, C);
|
||||
}
|
||||
mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_MINUS(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C);
|
||||
md_unary_bitwise_op_term(A) ::= MD_TOKEN_MINUS(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_OPERATOR, C);
|
||||
}
|
||||
mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_LOGICAL_NOT(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C);
|
||||
md_unary_bitwise_op_term(A) ::= MD_TOKEN_LOGICAL_NOT(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_OPERATOR, C);
|
||||
}
|
||||
mlr_dsl_unary_bitwise_op_term(A) ::= MLR_DSL_BITWISE_NOT(O) mlr_dsl_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, C);
|
||||
md_unary_bitwise_op_term(A) ::= MD_TOKEN_BITWISE_NOT(O) md_unary_bitwise_op_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_unary(O->text, MD_AST_NODE_TYPE_OPERATOR, C);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
mlr_dsl_pow_term(A) ::= mlr_dsl_atom_or_fcn(B). {
|
||||
md_pow_term(A) ::= md_atom_or_fcn(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_pow_term(A) ::= mlr_dsl_atom_or_fcn(B) MLR_DSL_POW(O) mlr_dsl_pow_term(C). {
|
||||
A = mlr_dsl_ast_node_alloc_binary(O->text, MLR_DSL_AST_NODE_TYPE_OPERATOR, B, C);
|
||||
md_pow_term(A) ::= md_atom_or_fcn(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);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -435,15 +435,15 @@ mlr_dsl_pow_term(A) ::= mlr_dsl_atom_or_fcn(B) MLR_DSL_POW(O) mlr_dsl_pow_term(C
|
|||
// lexer to give us field names with leading "$" so we can confidently strip it
|
||||
// off here.
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= mlr_dsl_field_name(B). {
|
||||
md_atom_or_fcn(A) ::= md_field_name(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_field_name(A) ::= MLR_DSL_FIELD_NAME(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);
|
||||
}
|
||||
mlr_dsl_field_name(A) ::= MLR_DSL_BRACED_FIELD_NAME(B). {
|
||||
md_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];
|
||||
|
|
@ -453,15 +453,15 @@ mlr_dsl_field_name(A) ::= MLR_DSL_BRACED_FIELD_NAME(B). {
|
|||
A = mlr_dsl_ast_node_alloc(no_dollar_name, B->type);
|
||||
}
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= mlr_dsl_oosvar_name(B). {
|
||||
md_atom_or_fcn(A) ::= md_oosvar_name(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_oosvar_name(A) ::= MLR_DSL_OOSVAR_NAME(B). {
|
||||
md_oosvar_name(A) ::= MD_TOKEN_OOSVAR_NAME(B). {
|
||||
char* at_name = B->text;
|
||||
char* no_at_name = &at_name[1];
|
||||
A = mlr_dsl_ast_node_alloc(no_at_name, B->type);
|
||||
}
|
||||
mlr_dsl_oosvar_name(A) ::= MLR_DSL_BRACED_OOSVAR_NAME(B). {
|
||||
md_oosvar_name(A) ::= MD_TOKEN_BRACED_OOSVAR_NAME(B). {
|
||||
// Replace "@{field.name}" with just "field.name"
|
||||
char* at_name = B->text;
|
||||
char* no_at_name = &at_name[2];
|
||||
|
|
@ -471,15 +471,15 @@ mlr_dsl_oosvar_name(A) ::= MLR_DSL_BRACED_OOSVAR_NAME(B). {
|
|||
A = mlr_dsl_ast_node_alloc(no_at_name, B->type);
|
||||
}
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= mlr_dsl_moosvar_name(B). {
|
||||
md_atom_or_fcn(A) ::= md_moosvar_name(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_moosvar_name(A) ::= MLR_DSL_MOOSVAR_NAME(B). {
|
||||
md_moosvar_name(A) ::= MD_TOKEN_MOOSVAR_NAME(B). {
|
||||
char* at_name = B->text;
|
||||
char* no_at_name = &at_name[2];
|
||||
A = mlr_dsl_ast_node_alloc(no_at_name, B->type);
|
||||
}
|
||||
mlr_dsl_moosvar_name(A) ::= MLR_DSL_BRACED_MOOSVAR_NAME(B). {
|
||||
md_moosvar_name(A) ::= MD_TOKEN_BRACED_MOOSVAR_NAME(B). {
|
||||
// Replace "@%{field.name}" with just "field.name"
|
||||
char* at_name = B->text;
|
||||
char* no_at_name = &at_name[3];
|
||||
|
|
@ -489,24 +489,24 @@ mlr_dsl_moosvar_name(A) ::= MLR_DSL_BRACED_MOOSVAR_NAME(B). {
|
|||
A = mlr_dsl_ast_node_alloc(no_at_name, B->type);
|
||||
}
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_NUMBER(B). {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_NUMBER(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_TRUE(B). {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_TRUE(B). {
|
||||
A = B;
|
||||
}
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_FALSE(B). {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_FALSE(B). {
|
||||
A = B;
|
||||
}
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_STRING(B). {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_STRING(B). {
|
||||
char* input = B->text;
|
||||
char* stripped = &input[1];
|
||||
int len = strlen(input);
|
||||
stripped[len-2] = 0;
|
||||
A = mlr_dsl_ast_node_alloc(stripped, B->type);
|
||||
}
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_REGEXI(B). {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_REGEXI(B). {
|
||||
char* input = B->text;
|
||||
char* stripped = &input[1];
|
||||
int len = strlen(input);
|
||||
|
|
@ -514,11 +514,11 @@ mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_REGEXI(B). {
|
|||
A = mlr_dsl_ast_node_alloc(stripped, B->type);
|
||||
}
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_CONTEXT_VARIABLE(B). {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_CONTEXT_VARIABLE(B). {
|
||||
A = B;
|
||||
}
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_LPAREN mlr_dsl_logical_or_term(B) MLR_DSL_RPAREN. {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_LPAREN md_logical_or_term(B) MD_TOKEN_RPAREN. {
|
||||
A = B;
|
||||
}
|
||||
|
||||
|
|
@ -529,17 +529,17 @@ mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_LPAREN mlr_dsl_logical_or_term(B) MLR_DSL_RPA
|
|||
// * 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)".
|
||||
|
||||
mlr_dsl_atom_or_fcn(A) ::= MLR_DSL_FCN_NAME(O) MLR_DSL_LPAREN mlr_dsl_fcn_args(B) MLR_DSL_RPAREN. {
|
||||
md_atom_or_fcn(A) ::= MD_TOKEN_FCN_NAME(O) MD_TOKEN_LPAREN md_fcn_args(B) MD_TOKEN_RPAREN. {
|
||||
A = mlr_dsl_ast_node_set_function_name(B, O->text);
|
||||
}
|
||||
// Need to invalidate "f(10,)" -- use some non-empty-args expr.
|
||||
mlr_dsl_fcn_args(A) ::= . {
|
||||
A = mlr_dsl_ast_node_alloc_zary("anon", MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
md_fcn_args(A) ::= . {
|
||||
A = mlr_dsl_ast_node_alloc_zary("anon", MD_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
}
|
||||
|
||||
mlr_dsl_fcn_args(A) ::= mlr_dsl_logical_or_term(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary("anon", MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME, B);
|
||||
md_fcn_args(A) ::= md_logical_or_term(B). {
|
||||
A = mlr_dsl_ast_node_alloc_unary("anon", MD_AST_NODE_TYPE_FUNCTION_NAME, B);
|
||||
}
|
||||
mlr_dsl_fcn_args(A) ::= mlr_dsl_fcn_args(B) MLR_DSL_COMMA mlr_dsl_logical_or_term(C). {
|
||||
md_fcn_args(A) ::= md_fcn_args(B) MD_TOKEN_COMMA md_logical_or_term(C). {
|
||||
A = mlr_dsl_ast_node_append_arg(B, C);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2111,17 +2111,17 @@ static lrec_evaluator_t* lrec_evaluator_alloc_from_ast_aux(mlr_dsl_ast_node_t* p
|
|||
int type_inferencing, function_lookup_t* fcn_lookup_table)
|
||||
{
|
||||
if (pnode->pchildren == NULL) { // leaf node
|
||||
if (pnode->type == MLR_DSL_AST_NODE_TYPE_FIELD_NAME) {
|
||||
if (pnode->type == MD_AST_NODE_TYPE_FIELD_NAME) {
|
||||
return lrec_evaluator_alloc_from_field_name(pnode->text, type_inferencing);
|
||||
} else if (pnode->type == MLR_DSL_AST_NODE_TYPE_OOSVAR_NAME) {
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_OOSVAR_NAME) {
|
||||
return lrec_evaluator_alloc_from_oosvar_name(pnode->text);
|
||||
} else if (pnode->type == MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL) {
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_STRNUM_LITERAL) {
|
||||
return lrec_evaluator_alloc_from_strnum_literal(pnode->text, type_inferencing);
|
||||
} else if (pnode->type == MLR_DSL_AST_NODE_TYPE_BOOLEAN_LITERAL) {
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_BOOLEAN_LITERAL) {
|
||||
return lrec_evaluator_alloc_from_boolean_literal(pnode->text);
|
||||
} else if (pnode->type == MLR_DSL_AST_NODE_TYPE_REGEXI) {
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_REGEXI) {
|
||||
return lrec_evaluator_alloc_from_strnum_literal(pnode->text, type_inferencing);
|
||||
} else if (pnode->type == MLR_DSL_AST_NODE_TYPE_CONTEXT_VARIABLE) {
|
||||
} else if (pnode->type == MD_AST_NODE_TYPE_CONTEXT_VARIABLE) {
|
||||
return lrec_evaluator_alloc_from_context_variable(pnode->text);
|
||||
} else {
|
||||
fprintf(stderr, "%s: internal coding error detected in file %s at line %d.\n",
|
||||
|
|
@ -2129,8 +2129,8 @@ static lrec_evaluator_t* lrec_evaluator_alloc_from_ast_aux(mlr_dsl_ast_node_t* p
|
|||
exit(1);
|
||||
}
|
||||
} else { // operator/function
|
||||
if ((pnode->type != MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME)
|
||||
&& (pnode->type != MLR_DSL_AST_NODE_TYPE_OPERATOR)) {
|
||||
if ((pnode->type != MD_AST_NODE_TYPE_FUNCTION_NAME)
|
||||
&& (pnode->type != MD_AST_NODE_TYPE_OPERATOR)) {
|
||||
fprintf(stderr, "%s: internal coding error detected in file %s at line %d: node type %s\n",
|
||||
MLR_GLOBALS.argv0, __FILE__, __LINE__, mlr_dsl_ast_node_describe_type(pnode->type));
|
||||
exit(1);
|
||||
|
|
@ -2153,10 +2153,10 @@ static lrec_evaluator_t* lrec_evaluator_alloc_from_ast_aux(mlr_dsl_ast_node_t* p
|
|||
mlr_dsl_ast_node_t* parg2_node = pnode->pchildren->phead->pnext->pvvalue;
|
||||
int type2 = parg2_node->type;
|
||||
|
||||
if ((streq(func_name, "=~") || streq(func_name, "!=~")) && type2 == MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL) {
|
||||
if ((streq(func_name, "=~") || streq(func_name, "!=~")) && type2 == MD_AST_NODE_TYPE_STRNUM_LITERAL) {
|
||||
lrec_evaluator_t* parg1 = lrec_evaluator_alloc_from_ast_aux(parg1_node, type_inferencing, fcn_lookup_table);
|
||||
pevaluator = lrec_evaluator_alloc_from_binary_regex_arg2_func_name(func_name, parg1, parg2_node->text, FALSE);
|
||||
} else if ((streq(func_name, "=~") || streq(func_name, "!=~")) && type2 == MLR_DSL_AST_NODE_TYPE_REGEXI) {
|
||||
} else if ((streq(func_name, "=~") || streq(func_name, "!=~")) && type2 == MD_AST_NODE_TYPE_REGEXI) {
|
||||
lrec_evaluator_t* parg1 = lrec_evaluator_alloc_from_ast_aux(parg1_node, type_inferencing, fcn_lookup_table);
|
||||
pevaluator = lrec_evaluator_alloc_from_binary_regex_arg2_func_name(func_name, parg1, parg2_node->text,
|
||||
TYPE_INFER_STRING_FLOAT_INT);
|
||||
|
|
@ -2175,13 +2175,13 @@ static lrec_evaluator_t* lrec_evaluator_alloc_from_ast_aux(mlr_dsl_ast_node_t* p
|
|||
mlr_dsl_ast_node_t* parg3_node = pnode->pchildren->phead->pnext->pnext->pvvalue;
|
||||
int type2 = parg2_node->type;
|
||||
|
||||
if ((streq(func_name, "sub") || streq(func_name, "gsub")) && type2 == MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL) {
|
||||
if ((streq(func_name, "sub") || streq(func_name, "gsub")) && type2 == MD_AST_NODE_TYPE_STRNUM_LITERAL) {
|
||||
// sub/gsub-regex special case:
|
||||
lrec_evaluator_t* parg1 = lrec_evaluator_alloc_from_ast_aux(parg1_node, type_inferencing, fcn_lookup_table);
|
||||
lrec_evaluator_t* parg3 = lrec_evaluator_alloc_from_ast_aux(parg3_node, type_inferencing, fcn_lookup_table);
|
||||
pevaluator = lrec_evaluator_alloc_from_ternary_regex_arg2_func_name(func_name, parg1, parg2_node->text, FALSE, parg3);
|
||||
|
||||
} else if ((streq(func_name, "sub") || streq(func_name, "gsub")) && type2 == MLR_DSL_AST_NODE_TYPE_REGEXI) {
|
||||
} else if ((streq(func_name, "sub") || streq(func_name, "gsub")) && type2 == MD_AST_NODE_TYPE_REGEXI) {
|
||||
// sub/gsub-regex special case:
|
||||
lrec_evaluator_t* parg1 = lrec_evaluator_alloc_from_ast_aux(parg1_node, type_inferencing, fcn_lookup_table);
|
||||
lrec_evaluator_t* parg3 = lrec_evaluator_alloc_from_ast_aux(parg3_node, type_inferencing, fcn_lookup_table);
|
||||
|
|
@ -2332,11 +2332,11 @@ static char * test3() {
|
|||
lrec_evaluator_t* px2 = lrec_evaluator_alloc_from_n_nn_func(n_nn_times_func, px, px);
|
||||
lrec_evaluator_t* p4 = lrec_evaluator_alloc_from_n_nn_func(n_nn_times_func, p2, p2);
|
||||
|
||||
mlr_dsl_ast_node_t* pxnode = mlr_dsl_ast_node_alloc("x", MLR_DSL_AST_NODE_TYPE_FIELD_NAME);
|
||||
mlr_dsl_ast_node_t* plognode = mlr_dsl_ast_node_alloc_zary("log", MLR_DSL_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
mlr_dsl_ast_node_t* pxnode = mlr_dsl_ast_node_alloc("x", MD_AST_NODE_TYPE_FIELD_NAME);
|
||||
mlr_dsl_ast_node_t* plognode = mlr_dsl_ast_node_alloc_zary("log", MD_AST_NODE_TYPE_FUNCTION_NAME);
|
||||
mlr_dsl_ast_node_t* plogxnode = mlr_dsl_ast_node_append_arg(plognode, pxnode);
|
||||
mlr_dsl_ast_node_t* p2node = mlr_dsl_ast_node_alloc("2", MLR_DSL_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
mlr_dsl_ast_node_t* p2logxnode = mlr_dsl_ast_node_alloc_binary("*", MLR_DSL_AST_NODE_TYPE_OPERATOR,
|
||||
mlr_dsl_ast_node_t* p2node = mlr_dsl_ast_node_alloc("2", MD_AST_NODE_TYPE_STRNUM_LITERAL);
|
||||
mlr_dsl_ast_node_t* p2logxnode = mlr_dsl_ast_node_alloc_binary("*", MD_AST_NODE_TYPE_OPERATOR,
|
||||
p2node, plogxnode);
|
||||
|
||||
lrec_evaluator_t* pastr = lrec_evaluator_alloc_from_ast(p2logxnode, TYPE_INFER_STRING_FLOAT_INT);
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ static void evaluate_statements(
|
|||
|
||||
int node_type = pstatement->ast_node_type;
|
||||
|
||||
if (node_type == MLR_DSL_AST_NODE_TYPE_SREC_ASSIGNMENT || node_type == MLR_DSL_AST_NODE_TYPE_OOSVAR_ASSIGNMENT) {
|
||||
if (node_type == MD_AST_NODE_TYPE_SREC_ASSIGNMENT || node_type == MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT) {
|
||||
mlr_dsl_cst_statement_item_t* pitem = pstatement->pitems->phead->pvvalue;
|
||||
char* output_field_name = pitem->output_field_name;
|
||||
int is_oosvar = pitem->is_oosvar;
|
||||
|
|
@ -296,7 +296,7 @@ static void evaluate_statements(
|
|||
lrec_put(pinrec, output_field_name, "bug", NO_FREE);
|
||||
}
|
||||
|
||||
} else if (node_type == MLR_DSL_AST_NODE_TYPE_FILTER) {
|
||||
} else if (node_type == MD_AST_NODE_TYPE_FILTER) {
|
||||
mlr_dsl_cst_statement_item_t* pitem = pstatement->pitems->phead->pvvalue;
|
||||
lrec_evaluator_t* pevaluator = pitem->pevaluator;
|
||||
|
||||
|
|
@ -310,7 +310,7 @@ static void evaluate_statements(
|
|||
}
|
||||
}
|
||||
|
||||
} else if (node_type == MLR_DSL_AST_NODE_TYPE_GATE) {
|
||||
} else if (node_type == MD_AST_NODE_TYPE_GATE) {
|
||||
mlr_dsl_cst_statement_item_t* pitem = pstatement->pitems->phead->pvvalue;
|
||||
lrec_evaluator_t* pevaluator = pitem->pevaluator;
|
||||
|
||||
|
|
@ -323,7 +323,7 @@ static void evaluate_statements(
|
|||
break;
|
||||
}
|
||||
|
||||
} else if (node_type == MLR_DSL_AST_NODE_TYPE_EMIT) {
|
||||
} else if (node_type == MD_AST_NODE_TYPE_EMIT) {
|
||||
lrec_t* prec_to_emit = lrec_unbacked_alloc();
|
||||
for (sllve_t* pf = pstatement->pitems->phead; pf != NULL; pf = pf->pnext) {
|
||||
mlr_dsl_cst_statement_item_t* pitem = pf->pvvalue;
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
pstatement->ast_node_type = past->type;
|
||||
pstatement->pitems = sllv_alloc();
|
||||
|
||||
if (past->type == MLR_DSL_AST_NODE_TYPE_SREC_ASSIGNMENT) {
|
||||
if (past->type == MD_AST_NODE_TYPE_SREC_ASSIGNMENT) {
|
||||
if ((past->pchildren == NULL) || (past->pchildren->length != 2)) {
|
||||
fprintf(stderr, "%s: internal coding error detected in file %s at line %d.\n",
|
||||
MLR_GLOBALS.argv0, __FILE__, __LINE__);
|
||||
|
|
@ -97,7 +97,7 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
mlr_dsl_ast_node_t* pleft = past->pchildren->phead->pvvalue;
|
||||
mlr_dsl_ast_node_t* pright = past->pchildren->phead->pnext->pvvalue;
|
||||
|
||||
if (pleft->type != MLR_DSL_AST_NODE_TYPE_FIELD_NAME) {
|
||||
if (pleft->type != MD_AST_NODE_TYPE_FIELD_NAME) {
|
||||
fprintf(stderr, "%s: internal coding error detected in file %s at line %d.\n",
|
||||
MLR_GLOBALS.argv0, __FILE__, __LINE__);
|
||||
exit(1);
|
||||
|
|
@ -112,7 +112,7 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
FALSE,
|
||||
lrec_evaluator_alloc_from_ast(pright, type_inferencing)));
|
||||
|
||||
} else if (past->type == MLR_DSL_AST_NODE_TYPE_OOSVAR_ASSIGNMENT) {
|
||||
} else if (past->type == MD_AST_NODE_TYPE_OOSVAR_ASSIGNMENT) {
|
||||
if ((past->pchildren == NULL) || (past->pchildren->length != 2)) {
|
||||
fprintf(stderr, "%s: internal coding error detected in file %s at line %d.\n",
|
||||
MLR_GLOBALS.argv0, __FILE__, __LINE__);
|
||||
|
|
@ -122,7 +122,7 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
mlr_dsl_ast_node_t* pleft = past->pchildren->phead->pvvalue;
|
||||
mlr_dsl_ast_node_t* pright = past->pchildren->phead->pnext->pvvalue;
|
||||
|
||||
if (pleft->type != MLR_DSL_AST_NODE_TYPE_OOSVAR_NAME) {
|
||||
if (pleft->type != MD_AST_NODE_TYPE_OOSVAR_NAME) {
|
||||
fprintf(stderr, "%s: internal coding error detected in file %s at line %d.\n",
|
||||
MLR_GLOBALS.argv0, __FILE__, __LINE__);
|
||||
exit(1);
|
||||
|
|
@ -137,21 +137,21 @@ static mlr_dsl_cst_statement_t* cst_statement_alloc(mlr_dsl_ast_node_t* past, in
|
|||
TRUE,
|
||||
lrec_evaluator_alloc_from_ast(pright, type_inferencing)));
|
||||
|
||||
} else if (past->type == MLR_DSL_AST_NODE_TYPE_FILTER) {
|
||||
} else if (past->type == MD_AST_NODE_TYPE_FILTER) {
|
||||
mlr_dsl_ast_node_t* pnode = past->pchildren->phead->pvvalue;
|
||||
sllv_add(pstatement->pitems, mlr_dsl_cst_statement_item_alloc(
|
||||
NULL,
|
||||
TRUE,
|
||||
lrec_evaluator_alloc_from_ast(pnode, type_inferencing)));
|
||||
|
||||
} else if (past->type == MLR_DSL_AST_NODE_TYPE_GATE) {
|
||||
} else if (past->type == MD_AST_NODE_TYPE_GATE) {
|
||||
mlr_dsl_ast_node_t* pnode = past->pchildren->phead->pvvalue;
|
||||
sllv_add(pstatement->pitems, mlr_dsl_cst_statement_item_alloc(
|
||||
NULL,
|
||||
TRUE,
|
||||
lrec_evaluator_alloc_from_ast(pnode, type_inferencing)));
|
||||
|
||||
} else if (past->type == MLR_DSL_AST_NODE_TYPE_EMIT) {
|
||||
} else if (past->type == MD_AST_NODE_TYPE_EMIT) {
|
||||
// Loop over oosvar names to emit in e.g. 'emit @a, @b, @c'.
|
||||
for (sllve_t* pe = past->pchildren->phead; pe != NULL; pe = pe->pnext) {
|
||||
mlr_dsl_ast_node_t* pnode = pe->pvvalue;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue