blob: d9b0804c84a032504067ff20f550786885509199 [file] [log] [blame]
syntax = "proto2";
message VarRef {
required int32 varnum = 1;
}
message ArrType {
repeated Const elements = 1;
}
message KVPair {
required string key = 1;
required string val = 2;
}
message HashType {
repeated KVPair keyval = 1;
}
message StringExtNoArg {
enum StrExtOp {
DUMP = 0;
STRIP = 1;
LSTRIP = 2;
RSTRIP = 3;
STRIPE = 4;
LSTRIPE = 5;
RSTRIPE = 6;
SWAPCASE = 7;
SWAPCASEE = 8;
SQUEEZE = 9;
}
required StrExtOp str_op = 1;
required string str_arg = 2;
}
message MathConst {
enum MathConstLit {
PI = 0;
E = 1;
}
required MathConstLit math_const = 1;
}
message Const {
oneof const_oneof {
uint32 int_lit = 1;
bool bool_val = 4;
}
}
message BinaryOp {
enum Op {
ADD = 0;
SUB = 1;
MUL = 2;
DIV = 3;
MOD = 4;
XOR = 5;
AND = 6;
OR = 7;
EQ = 8;
NE = 9;
LE = 10;
GE = 11;
LT = 12;
GT = 13;
RS = 14;
};
required Op op = 1;
required Rvalue left = 2;
required Rvalue right = 3;
}
message Rvalue {
oneof rvalue_oneof {
VarRef varref = 1;
Const cons = 2;
BinaryOp binop = 3;
}
}
message AssignmentStatement {
required Rvalue rvalue = 2;
}
message IfElse {
required Rvalue cond = 1;
required StatementSeq if_body = 2;
required StatementSeq else_body = 3;
}
//TODO: Add Switch statement
//message Switch {
// required Rvalue switch_var = 1;
// repeated Rvalue cond = 2;
//}
message Ternary {
required Rvalue tern_cond = 1;
required Rvalue t_branch = 2;
required Rvalue f_branch = 3;
}
message ObjectSpace {
enum OS_methods {
COUNT = 1;
}
required OS_methods os_func = 1;
required HashType os_arg = 2;
}
message Time {
enum T_methods {
AT = 1;
GM = 2;
}
required T_methods t_func = 1;
required uint32 t_arg = 2;
}
message Array {
enum Arr_methods {
FLATTEN = 1;
COMPACT = 2;
FETCH = 3;
FILL = 4;
ROTATE = 5;
ROTATE_E = 6;
DELETEIF = 7;
INSERT = 8;
BSEARCH = 9;
KEEPIF = 10;
SELECT = 11;
VALUES_AT = 12;
BLOCK = 13;
DIG = 14;
SLICE = 15;
PERM = 16;
COMB = 17;
ASSOC = 18;
RASSOC = 19;
}
required Arr_methods arr_func = 1;
required ArrType arr_arg = 2;
required Rvalue val_arg = 3;
}
message MathType {
oneof math_arg_oneof {
Rvalue math_rval = 2;
MathConst math_const = 3;
}
}
message MathOps {
enum Mops {
CBRT = 1;
COS = 2;
ERF = 3;
ERFC = 4;
LOG = 5;
LOG10 = 6;
LOG2 = 7;
SIN = 8;
SQRT = 9;
TAN = 10;
}
required Mops math_op = 1;
required MathType math_arg = 2;
}
message BuiltinFuncs {
oneof bifunc_oneof {
ObjectSpace os = 1;
Time time = 2;
Array arr = 3;
MathOps mops = 4;
}
}
message Statement {
oneof stmt_oneof {
AssignmentStatement assignment = 1;
IfElse ifelse = 2;
Ternary ternary_stmt = 3;
BuiltinFuncs builtins = 4;
StatementSeq blockstmt = 5;
}
}
message StatementSeq {
repeated Statement statements = 1;
}
message Function {
required StatementSeq statements = 1;
}
package ruby_fuzzer;