Skip to content
Permalink
main
Go to file
 
 
Cannot retrieve contributors at this time
859 lines (795 sloc) 41.1 KB
#include "match_token.h"
#
#include <ctype.h> // isdigit
#include <stdlib.h> // rand, strtol
#include <stdio.h>
#include "ops/op.h"
#include "ops/op_enum.h"
%%{
machine match_token; # declare our ragel machine
number = (('-')? [0-9]+) | ([X] [0-9A-F]+) | ([B] [0-1]+);
main := |*
# NUMBERS
number => { MATCH_NUMBER() };
# OPS
# variables
"A" => { MATCH_OP(E_OP_A); };
"B" => { MATCH_OP(E_OP_B); };
"C" => { MATCH_OP(E_OP_C); };
"D" => { MATCH_OP(E_OP_D); };
"DRUNK" => { MATCH_OP(E_OP_DRUNK); };
"DRUNK.MAX" => { MATCH_OP(E_OP_DRUNK_MAX); };
"DRUNK.MIN" => { MATCH_OP(E_OP_DRUNK_MIN); };
"DRUNK.WRAP" => { MATCH_OP(E_OP_DRUNK_WRAP); };
"FLIP" => { MATCH_OP(E_OP_FLIP); };
"I" => { MATCH_OP(E_OP_I); };
"O" => { MATCH_OP(E_OP_O); };
"O.INC" => { MATCH_OP(E_OP_O_INC); };
"O.MAX" => { MATCH_OP(E_OP_O_MAX); };
"O.MIN" => { MATCH_OP(E_OP_O_MIN); };
"O.WRAP" => { MATCH_OP(E_OP_O_WRAP); };
"T" => { MATCH_OP(E_OP_T); };
"TIME" => { MATCH_OP(E_OP_TIME); };
"TIME.ACT" => { MATCH_OP(E_OP_TIME_ACT); };
"LAST" => { MATCH_OP(E_OP_LAST); };
"X" => { MATCH_OP(E_OP_X); };
"Y" => { MATCH_OP(E_OP_Y); };
"Z" => { MATCH_OP(E_OP_Z); };
"J" => { MATCH_OP(E_OP_J); };
"K" => { MATCH_OP(E_OP_K); };
# init
"INIT" => { MATCH_OP(E_OP_INIT); };
"INIT.SCENE" => { MATCH_OP(E_OP_INIT_SCENE); };
"INIT.SCRIPT" => { MATCH_OP(E_OP_INIT_SCRIPT); };
"INIT.SCRIPT.ALL" => { MATCH_OP(E_OP_INIT_SCRIPT_ALL); };
"INIT.P" => { MATCH_OP(E_OP_INIT_P); };
"INIT.P.ALL" => { MATCH_OP(E_OP_INIT_P_ALL); };
"INIT.CV" => { MATCH_OP(E_OP_INIT_CV); };
"INIT.CV.ALL" => { MATCH_OP(E_OP_INIT_CV_ALL); };
"INIT.TR" => { MATCH_OP(E_OP_INIT_TR); };
"INIT.TR.ALL" => { MATCH_OP(E_OP_INIT_TR_ALL); };
"INIT.DATA" => { MATCH_OP(E_OP_INIT_DATA); };
"INIT.TIME" => { MATCH_OP(E_OP_INIT_TIME); };
# turtle
"@" => { MATCH_OP(E_OP_TURTLE); };
"@X" => { MATCH_OP(E_OP_TURTLE_X); };
"@Y" => { MATCH_OP(E_OP_TURTLE_Y); };
"@MOVE" => { MATCH_OP(E_OP_TURTLE_MOVE); };
"@F" => { MATCH_OP(E_OP_TURTLE_F); };
"@FX1" => { MATCH_OP(E_OP_TURTLE_FX1); };
"@FY1" => { MATCH_OP(E_OP_TURTLE_FY1); };
"@FX2" => { MATCH_OP(E_OP_TURTLE_FX2); };
"@FY2" => { MATCH_OP(E_OP_TURTLE_FY2); };
"@SPEED" => { MATCH_OP(E_OP_TURTLE_SPEED); };
"@DIR" => { MATCH_OP(E_OP_TURTLE_DIR); };
"@STEP" => { MATCH_OP(E_OP_TURTLE_STEP); };
"@BUMP" => { MATCH_OP(E_OP_TURTLE_BUMP); };
"@WRAP" => { MATCH_OP(E_OP_TURTLE_WRAP); };
"@BOUNCE" => { MATCH_OP(E_OP_TURTLE_BOUNCE); };
"@SCRIPT" => { MATCH_OP(E_OP_TURTLE_SCRIPT); };
"@SHOW" => { MATCH_OP(E_OP_TURTLE_SHOW); };
# metronome
"M" => { MATCH_OP(E_OP_M); };
"M!" => { MATCH_OP(E_OP_M_SYM_EXCLAMATION); };
"M.ACT" => { MATCH_OP(E_OP_M_ACT); };
"M.RESET" => { MATCH_OP(E_OP_M_RESET); };
# patterns
"P.N" => { MATCH_OP(E_OP_P_N); };
"P" => { MATCH_OP(E_OP_P); };
"PN" => { MATCH_OP(E_OP_PN); };
"P.L" => { MATCH_OP(E_OP_P_L); };
"PN.L" => { MATCH_OP(E_OP_PN_L); };
"P.WRAP" => { MATCH_OP(E_OP_P_WRAP); };
"PN.WRAP" => { MATCH_OP(E_OP_PN_WRAP); };
"P.START" => { MATCH_OP(E_OP_P_START); };
"PN.START" => { MATCH_OP(E_OP_PN_START); };
"P.END" => { MATCH_OP(E_OP_P_END); };
"PN.END" => { MATCH_OP(E_OP_PN_END); };
"P.I" => { MATCH_OP(E_OP_P_I); };
"PN.I" => { MATCH_OP(E_OP_PN_I); };
"P.HERE" => { MATCH_OP(E_OP_P_HERE); };
"PN.HERE" => { MATCH_OP(E_OP_PN_HERE); };
"P.NEXT" => { MATCH_OP(E_OP_P_NEXT); };
"PN.NEXT" => { MATCH_OP(E_OP_PN_NEXT); };
"P.PREV" => { MATCH_OP(E_OP_P_PREV); };
"PN.PREV" => { MATCH_OP(E_OP_PN_PREV); };
"P.INS" => { MATCH_OP(E_OP_P_INS); };
"PN.INS" => { MATCH_OP(E_OP_PN_INS); };
"P.RM" => { MATCH_OP(E_OP_P_RM); };
"PN.RM" => { MATCH_OP(E_OP_PN_RM); };
"P.PUSH" => { MATCH_OP(E_OP_P_PUSH); };
"PN.PUSH" => { MATCH_OP(E_OP_PN_PUSH); };
"P.POP" => { MATCH_OP(E_OP_P_POP); };
"PN.POP" => { MATCH_OP(E_OP_PN_POP); };
"P.MIN" => { MATCH_OP(E_OP_P_MIN); };
"PN.MIN" => { MATCH_OP(E_OP_PN_MIN); };
"P.MAX" => { MATCH_OP(E_OP_P_MAX); };
"PN.MAX" => { MATCH_OP(E_OP_PN_MAX); };
"P.SHUF" => { MATCH_OP(E_OP_P_SHUF); };
"PN.SHUF" => { MATCH_OP(E_OP_PN_SHUF); };
"P.REV" => { MATCH_OP(E_OP_P_REV); };
"PN.REV" => { MATCH_OP(E_OP_PN_REV); };
"P.ROT" => { MATCH_OP(E_OP_P_ROT); };
"PN.ROT" => { MATCH_OP(E_OP_PN_ROT); };
"P.RND" => { MATCH_OP(E_OP_P_RND); };
"PN.RND" => { MATCH_OP(E_OP_PN_RND); };
"P.+" => { MATCH_OP(E_OP_P_ADD); };
"PN.+" => { MATCH_OP(E_OP_PN_ADD); };
"P.-" => { MATCH_OP(E_OP_P_SUB); };
"PN.-" => { MATCH_OP(E_OP_PN_SUB); };
"P.+W" => { MATCH_OP(E_OP_P_ADDW); };
"PN.+W" => { MATCH_OP(E_OP_PN_ADDW); };
"P.-W" => { MATCH_OP(E_OP_P_SUBW); };
"PN.-W" => { MATCH_OP(E_OP_PN_SUBW); };
# queue
"Q" => { MATCH_OP(E_OP_Q); };
"Q.AVG" => { MATCH_OP(E_OP_Q_AVG); };
"Q.N" => { MATCH_OP(E_OP_Q_N); };
# hardware
"CV" => { MATCH_OP(E_OP_CV); };
"CV.OFF" => { MATCH_OP(E_OP_CV_OFF); };
"CV.SLEW" => { MATCH_OP(E_OP_CV_SLEW); };
"IN" => { MATCH_OP(E_OP_IN); };
"IN.SCALE" => { MATCH_OP(E_OP_IN_SCALE); };
"IN.CAL.MIN" => { MATCH_OP(E_OP_IN_CAL_MIN); };
"IN.CAL.MAX" => { MATCH_OP(E_OP_IN_CAL_MAX); };
"IN.CAL.RESET" => { MATCH_OP(E_OP_IN_CAL_RESET); };
"PARAM" => { MATCH_OP(E_OP_PARAM); };
"PARAM.SCALE" => { MATCH_OP(E_OP_PARAM_SCALE); };
"PARAM.CAL.MIN" => { MATCH_OP(E_OP_PARAM_CAL_MIN); };
"PARAM.CAL.MAX" => { MATCH_OP(E_OP_PARAM_CAL_MAX); };
"PARAM.CAL.RESET" => { MATCH_OP(E_OP_PARAM_CAL_RESET); };
"PRM" => { MATCH_OP(E_OP_PRM); };
"TR" => { MATCH_OP(E_OP_TR); };
"TR.POL" => { MATCH_OP(E_OP_TR_POL); };
"TR.TIME" => { MATCH_OP(E_OP_TR_TIME); };
"TR.TOG" => { MATCH_OP(E_OP_TR_TOG); };
"TR.PULSE" => { MATCH_OP(E_OP_TR_PULSE); };
"TR.P" => { MATCH_OP(E_OP_TR_P); };
"CV.SET" => { MATCH_OP(E_OP_CV_SET); };
"MUTE" => { MATCH_OP(E_OP_MUTE); };
"STATE" => { MATCH_OP(E_OP_STATE); };
"DEVICE.FLIP" => { MATCH_OP(E_OP_DEVICE_FLIP); };
# maths
"ADD" => { MATCH_OP(E_OP_ADD); };
"SUB" => { MATCH_OP(E_OP_SUB); };
"MUL" => { MATCH_OP(E_OP_MUL); };
"DIV" => { MATCH_OP(E_OP_DIV); };
"MOD" => { MATCH_OP(E_OP_MOD); };
"RAND" => { MATCH_OP(E_OP_RAND); };
"RND" => { MATCH_OP(E_OP_RND); };
"RRAND" => { MATCH_OP(E_OP_RRAND); };
"RRND" => { MATCH_OP(E_OP_RRND); };
"R" => { MATCH_OP(E_OP_R); };
"R.MIN" => { MATCH_OP(E_OP_R_MIN); };
"R.MAX" => { MATCH_OP(E_OP_R_MAX); };
"TOSS" => { MATCH_OP(E_OP_TOSS); };
"MIN" => { MATCH_OP(E_OP_MIN); };
"MAX" => { MATCH_OP(E_OP_MAX); };
"LIM" => { MATCH_OP(E_OP_LIM); };
"WRAP" => { MATCH_OP(E_OP_WRAP); };
"WRP" => { MATCH_OP(E_OP_WRP); };
"QT" => { MATCH_OP(E_OP_QT); };
"QT.S" => { MATCH_OP(E_OP_QT_S); };
"QT.CS" => { MATCH_OP(E_OP_QT_CS); };
"QT.B" => { MATCH_OP(E_OP_QT_B); };
"AVG" => { MATCH_OP(E_OP_AVG); };
"EQ" => { MATCH_OP(E_OP_EQ); };
"NE" => { MATCH_OP(E_OP_NE); };
"LT" => { MATCH_OP(E_OP_LT); };
"GT" => { MATCH_OP(E_OP_GT); };
"LTE" => { MATCH_OP(E_OP_LTE); };
"GTE" => { MATCH_OP(E_OP_GTE); };
"NZ" => { MATCH_OP(E_OP_NZ); };
"EZ" => { MATCH_OP(E_OP_EZ); };
"RSH" => { MATCH_OP(E_OP_RSH); };
"LSH" => { MATCH_OP(E_OP_LSH); };
"RROT" => { MATCH_OP(E_OP_RROT); };
"LROT" => { MATCH_OP(E_OP_LROT); };
"EXP" => { MATCH_OP(E_OP_EXP); };
"ABS" => { MATCH_OP(E_OP_ABS); };
"SGN" => { MATCH_OP(E_OP_SGN); };
"AND" => { MATCH_OP(E_OP_AND); };
"OR" => { MATCH_OP(E_OP_OR); };
"JI" => { MATCH_OP(E_OP_JI); };
"SCALE" => { MATCH_OP(E_OP_SCALE); };
"SCL" => { MATCH_OP(E_OP_SCL); };
"N" => { MATCH_OP(E_OP_N); };
"VN" => { MATCH_OP(E_OP_VN); };
"N.S" => { MATCH_OP(E_OP_N_S); };
"N.C" => { MATCH_OP(E_OP_N_C); };
"N.CS" => { MATCH_OP(E_OP_N_CS); };
"V" => { MATCH_OP(E_OP_V); };
"VV" => { MATCH_OP(E_OP_VV); };
"ER" => { MATCH_OP(E_OP_ER); };
"NR" => { MATCH_OP(E_OP_NR); };
"BPM" => { MATCH_OP(E_OP_BPM);; };
"|" => { MATCH_OP(E_OP_BIT_OR);; };
"&" => { MATCH_OP(E_OP_BIT_AND);; };
"~" => { MATCH_OP(E_OP_BIT_NOT);; };
"^" => { MATCH_OP(E_OP_BIT_XOR);; };
"BSET" => { MATCH_OP(E_OP_BSET);; };
"BGET" => { MATCH_OP(E_OP_BGET);; };
"BCLR" => { MATCH_OP(E_OP_BCLR);; };
"BTOG" => { MATCH_OP(E_OP_BTOG);; };
"XOR" => { MATCH_OP(E_OP_XOR); };
"CHAOS" => { MATCH_OP(E_OP_CHAOS); };
"CHAOS.R" => { MATCH_OP(E_OP_CHAOS_R); };
"CHAOS.ALG" => { MATCH_OP(E_OP_CHAOS_ALG); };
"?" => { MATCH_OP(E_OP_TIF); };
"+" => { MATCH_OP(E_OP_SYM_PLUS); };
"-" => { MATCH_OP(E_OP_SYM_DASH); };
"*" => { MATCH_OP(E_OP_SYM_STAR); };
"/" => { MATCH_OP(E_OP_SYM_FORWARD_SLASH); };
"%" => { MATCH_OP(E_OP_SYM_PERCENTAGE); };
"==" => { MATCH_OP(E_OP_SYM_EQUAL_x2); };
"!=" => { MATCH_OP(E_OP_SYM_EXCLAMATION_EQUAL); };
"<" => { MATCH_OP(E_OP_SYM_LEFT_ANGLED); };
">" => { MATCH_OP(E_OP_SYM_RIGHT_ANGLED); };
"<=" => { MATCH_OP(E_OP_SYM_LEFT_ANGLED_EQUAL); };
">=" => { MATCH_OP(E_OP_SYM_RIGHT_ANGLED_EQUAL); };
"!" => { MATCH_OP(E_OP_SYM_EXCLAMATION); };
"<<" => { MATCH_OP(E_OP_SYM_LEFT_ANGLED_x2); };
">>" => { MATCH_OP(E_OP_SYM_RIGHT_ANGLED_x2); };
"<<<" => { MATCH_OP(E_OP_SYM_LEFT_ANGLED_x3); };
">>>" => { MATCH_OP(E_OP_SYM_RIGHT_ANGLED_x3); };
"&&" => { MATCH_OP(E_OP_SYM_AMPERSAND_x2); };
"||" => { MATCH_OP(E_OP_SYM_PIPE_x2); };
# stack
"S.ALL" => { MATCH_OP(E_OP_S_ALL); };
"S.POP" => { MATCH_OP(E_OP_S_POP); };
"S.CLR" => { MATCH_OP(E_OP_S_CLR); };
"S.L" => { MATCH_OP(E_OP_S_L); };
# controlflow
"SCRIPT" => { MATCH_OP(E_OP_SCRIPT); };
"$" => { MATCH_OP(E_OP_SYM_DOLLAR); };
"SCRIPT.POL" => { MATCH_OP(E_OP_SCRIPT_POL); };
"$.POL" => { MATCH_OP(E_OP_SYM_DOLLAR_POL); };
"KILL" => { MATCH_OP(E_OP_KILL); };
"SCENE" => { MATCH_OP(E_OP_SCENE); };
"SCENE.G" => { MATCH_OP(E_OP_SCENE_G); };
"BREAK" => { MATCH_OP(E_OP_BREAK); };
"BRK" => { MATCH_OP(E_OP_BRK); };
"SYNC" => { MATCH_OP(E_OP_SYNC); };
# delay
"DEL.CLR" => { MATCH_OP(E_OP_DEL_CLR); };
# i2c
"IIA" => { MATCH_OP(E_OP_IIA); };
"IIS" => { MATCH_OP(E_OP_IIS); };
"IIS1" => { MATCH_OP(E_OP_IIS1); };
"IIS2" => { MATCH_OP(E_OP_IIS2); };
"IIS3" => { MATCH_OP(E_OP_IIS3); };
"IISB1" => { MATCH_OP(E_OP_IISB1); };
"IISB2" => { MATCH_OP(E_OP_IISB2); };
"IISB3" => { MATCH_OP(E_OP_IISB3); };
"IIQ" => { MATCH_OP(E_OP_IIQ); };
"IIQ1" => { MATCH_OP(E_OP_IIQ1); };
"IIQ2" => { MATCH_OP(E_OP_IIQ2); };
"IIQ3" => { MATCH_OP(E_OP_IIQ3); };
"IIQB1" => { MATCH_OP(E_OP_IIQB1); };
"IIQB2" => { MATCH_OP(E_OP_IIQB2); };
"IIQB3" => { MATCH_OP(E_OP_IIQB3); };
"IIB" => { MATCH_OP(E_OP_IIB); };
"IIB1" => { MATCH_OP(E_OP_IIB1); };
"IIB2" => { MATCH_OP(E_OP_IIB2); };
"IIB3" => { MATCH_OP(E_OP_IIB3); };
"IIBB1" => { MATCH_OP(E_OP_IIBB1); };
"IIBB2" => { MATCH_OP(E_OP_IIBB2); };
"IIBB3" => { MATCH_OP(E_OP_IIBB3); };
# whitewhale
"WW.PRESET" => { MATCH_OP(E_OP_WW_PRESET); };
"WW.POS" => { MATCH_OP(E_OP_WW_POS); };
"WW.SYNC" => { MATCH_OP(E_OP_WW_SYNC); };
"WW.START" => { MATCH_OP(E_OP_WW_START); };
"WW.END" => { MATCH_OP(E_OP_WW_END); };
"WW.PMODE" => { MATCH_OP(E_OP_WW_PMODE); };
"WW.PATTERN" => { MATCH_OP(E_OP_WW_PATTERN); };
"WW.QPATTERN" => { MATCH_OP(E_OP_WW_QPATTERN); };
"WW.MUTE1" => { MATCH_OP(E_OP_WW_MUTE1); };
"WW.MUTE2" => { MATCH_OP(E_OP_WW_MUTE2); };
"WW.MUTE3" => { MATCH_OP(E_OP_WW_MUTE3); };
"WW.MUTE4" => { MATCH_OP(E_OP_WW_MUTE4); };
"WW.MUTEA" => { MATCH_OP(E_OP_WW_MUTEA); };
"WW.MUTEB" => { MATCH_OP(E_OP_WW_MUTEB); };
# meadowphysics
"MP.PRESET" => { MATCH_OP(E_OP_MP_PRESET); };
"MP.RESET" => { MATCH_OP(E_OP_MP_RESET); };
"MP.STOP" => { MATCH_OP(E_OP_MP_STOP); };
# earthsea
"ES.PRESET" => { MATCH_OP(E_OP_ES_PRESET); };
"ES.MODE" => { MATCH_OP(E_OP_ES_MODE); };
"ES.CLOCK" => { MATCH_OP(E_OP_ES_CLOCK); };
"ES.RESET" => { MATCH_OP(E_OP_ES_RESET); };
"ES.PATTERN" => { MATCH_OP(E_OP_ES_PATTERN); };
"ES.TRANS" => { MATCH_OP(E_OP_ES_TRANS); };
"ES.STOP" => { MATCH_OP(E_OP_ES_STOP); };
"ES.TRIPLE" => { MATCH_OP(E_OP_ES_TRIPLE); };
"ES.MAGIC" => { MATCH_OP(E_OP_ES_MAGIC); };
# orca
"OR.TRK" => { MATCH_OP(E_OP_OR_TRK); };
"OR.CLK" => { MATCH_OP(E_OP_OR_CLK); };
"OR.DIV" => { MATCH_OP(E_OP_OR_DIV); };
"OR.PHASE" => { MATCH_OP(E_OP_OR_PHASE); };
"OR.RST" => { MATCH_OP(E_OP_OR_RST); };
"OR.WGT" => { MATCH_OP(E_OP_OR_WGT); };
"OR.MUTE" => { MATCH_OP(E_OP_OR_MUTE); };
"OR.SCALE" => { MATCH_OP(E_OP_OR_SCALE); };
"OR.BANK" => { MATCH_OP(E_OP_OR_BANK); };
"OR.PRESET" => { MATCH_OP(E_OP_OR_PRESET); };
"OR.RELOAD" => { MATCH_OP(E_OP_OR_RELOAD); };
"OR.ROTS" => { MATCH_OP(E_OP_OR_ROTS); };
"OR.ROTW" => { MATCH_OP(E_OP_OR_ROTW); };
"OR.GRST" => { MATCH_OP(E_OP_OR_GRST); };
"OR.CVA" => { MATCH_OP(E_OP_OR_CVA); };
"OR.CVB" => { MATCH_OP(E_OP_OR_CVB); };
# ansible
"ANS.G.LED" => { MATCH_OP(E_OP_ANS_G_LED); };
"ANS.G" => { MATCH_OP(E_OP_ANS_G); };
"ANS.G.P" => { MATCH_OP(E_OP_ANS_G_P); };
"ANS.A" => { MATCH_OP(E_OP_ANS_A); };
"ANS.A.LED" => { MATCH_OP(E_OP_ANS_A_LED); };
"ANS.APP" => { MATCH_OP(E_OP_ANS_APP); };
"KR.PRE" => { MATCH_OP(E_OP_KR_PRE); };
"KR.PAT" => { MATCH_OP(E_OP_KR_PAT); };
"KR.SCALE" => { MATCH_OP(E_OP_KR_SCALE); };
"KR.PERIOD" => { MATCH_OP(E_OP_KR_PERIOD); };
"KR.POS" => { MATCH_OP(E_OP_KR_POS); };
"KR.L.ST" => { MATCH_OP(E_OP_KR_L_ST); };
"KR.L.LEN" => { MATCH_OP(E_OP_KR_L_LEN); };
"KR.RES" => { MATCH_OP(E_OP_KR_RES); };
"KR.CV" => { MATCH_OP(E_OP_KR_CV); };
"KR.MUTE" => { MATCH_OP(E_OP_KR_MUTE); };
"KR.TMUTE" => { MATCH_OP(E_OP_KR_TMUTE); };
"KR.CLK" => { MATCH_OP(E_OP_KR_CLK); };
"KR.PG" => { MATCH_OP(E_OP_KR_PG); };
"KR.CUE" => { MATCH_OP(E_OP_KR_CUE); };
"KR.DIR" => { MATCH_OP(E_OP_KR_DIR); };
"KR.DUR" => { MATCH_OP(E_OP_KR_DUR); };
"ME.PRE" => { MATCH_OP(E_OP_ME_PRE); };
"ME.RES" => { MATCH_OP(E_OP_ME_RES); };
"ME.STOP" => { MATCH_OP(E_OP_ME_STOP); };
"ME.SCALE" => { MATCH_OP(E_OP_ME_SCALE); };
"ME.PERIOD" => { MATCH_OP(E_OP_ME_PERIOD); };
"ME.CV" => { MATCH_OP(E_OP_ME_CV); };
"LV.PRE" => { MATCH_OP(E_OP_LV_PRE); };
"LV.RES" => { MATCH_OP(E_OP_LV_RES); };
"LV.POS" => { MATCH_OP(E_OP_LV_POS); };
"LV.L.ST" => { MATCH_OP(E_OP_LV_L_ST); };
"LV.L.LEN" => { MATCH_OP(E_OP_LV_L_LEN); };
"LV.L.DIR" => { MATCH_OP(E_OP_LV_L_DIR); };
"LV.CV" => { MATCH_OP(E_OP_LV_CV); };
"CY.PRE" => { MATCH_OP(E_OP_CY_PRE); };
"CY.RES" => { MATCH_OP(E_OP_CY_RES); };
"CY.POS" => { MATCH_OP(E_OP_CY_POS); };
"CY.REV" => { MATCH_OP(E_OP_CY_REV); };
"CY.CV" => { MATCH_OP(E_OP_CY_CV); };
"MID.SHIFT" => { MATCH_OP(E_OP_MID_SHIFT); };
"MID.SLEW" => { MATCH_OP(E_OP_MID_SLEW); };
"ARP.STY" => { MATCH_OP(E_OP_ARP_STY); };
"ARP.HLD" => { MATCH_OP(E_OP_ARP_HLD); };
"ARP.RPT" => { MATCH_OP(E_OP_ARP_RPT); };
"ARP.GT" => { MATCH_OP(E_OP_ARP_GT); };
"ARP.DIV" => { MATCH_OP(E_OP_ARP_DIV); };
"ARP.RES" => { MATCH_OP(E_OP_ARP_RES); };
"ARP.SHIFT" => { MATCH_OP(E_OP_ARP_SHIFT); };
"ARP.SLEW" => { MATCH_OP(E_OP_ARP_SLEW); };
"ARP.FIL" => { MATCH_OP(E_OP_ARP_FIL); };
"ARP.ROT" => { MATCH_OP(E_OP_ARP_ROT); };
"ARP.ER" => { MATCH_OP(E_OP_ARP_ER); };
# justfriends
"JF.TR" => { MATCH_OP(E_OP_JF_TR); };
"JF.RMODE" => { MATCH_OP(E_OP_JF_RMODE); };
"JF.RUN" => { MATCH_OP(E_OP_JF_RUN); };
"JF.SHIFT" => { MATCH_OP(E_OP_JF_SHIFT); };
"JF.VTR" => { MATCH_OP(E_OP_JF_VTR); };
"JF.MODE" => { MATCH_OP(E_OP_JF_MODE); };
"JF.TICK" => { MATCH_OP(E_OP_JF_TICK); };
"JF.VOX" => { MATCH_OP(E_OP_JF_VOX); };
"JF.NOTE" => { MATCH_OP(E_OP_JF_NOTE); };
"JF.GOD" => { MATCH_OP(E_OP_JF_GOD); };
"JF.TUNE" => { MATCH_OP(E_OP_JF_TUNE); };
"JF.QT" => { MATCH_OP(E_OP_JF_QT); };
# telex
"TO.TR" => { MATCH_OP(E_OP_TO_TR); };
"TO.TR.TOG" => { MATCH_OP(E_OP_TO_TR_TOG); };
"TO.TR.PULSE" => { MATCH_OP(E_OP_TO_TR_PULSE); };
"TO.TR.TIME" => { MATCH_OP(E_OP_TO_TR_TIME); };
"TO.TR.TIME.S" => { MATCH_OP(E_OP_TO_TR_TIME_S); };
"TO.TR.TIME.M" => { MATCH_OP(E_OP_TO_TR_TIME_M); };
"TO.TR.POL" => { MATCH_OP(E_OP_TO_TR_POL); };
"TO.KILL" => { MATCH_OP(E_OP_TO_KILL); };
"TO.TR.PULSE.DIV" => { MATCH_OP(E_OP_TO_TR_PULSE_DIV); };
"TO.TR.PULSE.MUTE" => { MATCH_OP(E_OP_TO_TR_PULSE_MUTE); };
"TO.TR.M.MUL" => { MATCH_OP(E_OP_TO_TR_M_MUL); };
"TO.M" => { MATCH_OP(E_OP_TO_M); };
"TO.M.S" => { MATCH_OP(E_OP_TO_M_S); };
"TO.M.M" => { MATCH_OP(E_OP_TO_M_M); };
"TO.M.BPM" => { MATCH_OP(E_OP_TO_M_BPM); };
"TO.M.ACT" => { MATCH_OP(E_OP_TO_M_ACT); };
"TO.M.SYNC" => { MATCH_OP(E_OP_TO_M_SYNC); };
"TO.M.COUNT" => { MATCH_OP(E_OP_TO_M_COUNT); };
"TO.TR.M" => { MATCH_OP(E_OP_TO_TR_M); };
"TO.TR.M.S" => { MATCH_OP(E_OP_TO_TR_M_S); };
"TO.TR.M.M" => { MATCH_OP(E_OP_TO_TR_M_M); };
"TO.TR.M.BPM" => { MATCH_OP(E_OP_TO_TR_M_BPM); };
"TO.TR.M.ACT" => { MATCH_OP(E_OP_TO_TR_M_ACT); };
"TO.TR.M.SYNC" => { MATCH_OP(E_OP_TO_TR_M_SYNC); };
"TO.TR.WIDTH" => { MATCH_OP(E_OP_TO_TR_WIDTH); };
"TO.TR.M.COUNT" => { MATCH_OP(E_OP_TO_TR_M_COUNT); };
"TO.CV" => { MATCH_OP(E_OP_TO_CV); };
"TO.CV.SLEW" => { MATCH_OP(E_OP_TO_CV_SLEW); };
"TO.CV.SLEW.S" => { MATCH_OP(E_OP_TO_CV_SLEW_S); };
"TO.CV.SLEW.M" => { MATCH_OP(E_OP_TO_CV_SLEW_M); };
"TO.CV.SET" => { MATCH_OP(E_OP_TO_CV_SET); };
"TO.CV.OFF" => { MATCH_OP(E_OP_TO_CV_OFF); };
"TO.CV.QT" => { MATCH_OP(E_OP_TO_CV_QT); };
"TO.CV.QT.SET" => { MATCH_OP(E_OP_TO_CV_QT_SET); };
"TO.CV.N" => { MATCH_OP(E_OP_TO_CV_N); };
"TO.CV.N.SET" => { MATCH_OP(E_OP_TO_CV_N_SET); };
"TO.CV.SCALE" => { MATCH_OP(E_OP_TO_CV_SCALE); };
"TO.CV.LOG" => { MATCH_OP(E_OP_TO_CV_LOG); };
"TO.CV.INIT" => { MATCH_OP(E_OP_TO_CV_INIT); };
"TO.TR.INIT" => { MATCH_OP(E_OP_TO_TR_INIT); };
"TO.INIT" => { MATCH_OP(E_OP_TO_INIT); };
"TO.TR.P" => { MATCH_OP(E_OP_TO_TR_P); };
"TO.TR.P.DIV" => { MATCH_OP(E_OP_TO_TR_P_DIV); };
"TO.TR.P.MUTE" => { MATCH_OP(E_OP_TO_TR_P_MUTE); };
"TO.OSC" => { MATCH_OP(E_OP_TO_OSC); };
"TO.OSC.SET" => { MATCH_OP(E_OP_TO_OSC_SET); };
"TO.OSC.QT" => { MATCH_OP(E_OP_TO_OSC_QT); };
"TO.OSC.QT.SET" => { MATCH_OP(E_OP_TO_OSC_QT_SET); };
"TO.OSC.FQ" => { MATCH_OP(E_OP_TO_OSC_FQ); };
"TO.OSC.FQ.SET" => { MATCH_OP(E_OP_TO_OSC_FQ_SET); };
"TO.OSC.N" => { MATCH_OP(E_OP_TO_OSC_N); };
"TO.OSC.N.SET" => { MATCH_OP(E_OP_TO_OSC_N_SET); };
"TO.OSC.LFO" => { MATCH_OP(E_OP_TO_OSC_LFO); };
"TO.OSC.LFO.SET" => { MATCH_OP(E_OP_TO_OSC_LFO_SET); };
"TO.OSC.WAVE" => { MATCH_OP(E_OP_TO_OSC_WAVE); };
"TO.OSC.SYNC" => { MATCH_OP(E_OP_TO_OSC_SYNC); };
"TO.OSC.PHASE" => { MATCH_OP(E_OP_TO_OSC_PHASE); };
"TO.OSC.WIDTH" => { MATCH_OP(E_OP_TO_OSC_WIDTH); };
"TO.OSC.RECT" => { MATCH_OP(E_OP_TO_OSC_RECT); };
"TO.OSC.SLEW" => { MATCH_OP(E_OP_TO_OSC_SLEW); };
"TO.OSC.SLEW.S" => { MATCH_OP(E_OP_TO_OSC_SLEW_S); };
"TO.OSC.SLEW.M" => { MATCH_OP(E_OP_TO_OSC_SLEW_M); };
"TO.OSC.SCALE" => { MATCH_OP(E_OP_TO_OSC_SCALE); };
"TO.OSC.CYC" => { MATCH_OP(E_OP_TO_OSC_CYC); };
"TO.OSC.CYC.S" => { MATCH_OP(E_OP_TO_OSC_CYC_S); };
"TO.OSC.CYC.M" => { MATCH_OP(E_OP_TO_OSC_CYC_M); };
"TO.OSC.CYC.SET" => { MATCH_OP(E_OP_TO_OSC_CYC_SET); };
"TO.OSC.CYC.S.SET" => { MATCH_OP(E_OP_TO_OSC_CYC_S_SET); };
"TO.OSC.CYC.M.SET" => { MATCH_OP(E_OP_TO_OSC_CYC_M_SET); };
"TO.OSC.CTR" => { MATCH_OP(E_OP_TO_OSC_CTR); };
"TO.ENV.ACT" => { MATCH_OP(E_OP_TO_ENV_ACT); };
"TO.ENV.ATT" => { MATCH_OP(E_OP_TO_ENV_ATT); };
"TO.ENV.ATT.S" => { MATCH_OP(E_OP_TO_ENV_ATT_S); };
"TO.ENV.ATT.M" => { MATCH_OP(E_OP_TO_ENV_ATT_M); };
"TO.ENV.DEC" => { MATCH_OP(E_OP_TO_ENV_DEC); };
"TO.ENV.DEC.S" => { MATCH_OP(E_OP_TO_ENV_DEC_S); };
"TO.ENV.DEC.M" => { MATCH_OP(E_OP_TO_ENV_DEC_M); };
"TO.ENV.TRIG" => { MATCH_OP(E_OP_TO_ENV_TRIG); };
"TO.ENV.EOR" => { MATCH_OP(E_OP_TO_ENV_EOR); };
"TO.ENV.EOC" => { MATCH_OP(E_OP_TO_ENV_EOC); };
"TO.ENV.LOOP" => { MATCH_OP(E_OP_TO_ENV_LOOP); };
"TO.ENV" => { MATCH_OP(E_OP_TO_ENV); };
"TO.CV.CALIB" => { MATCH_OP(E_OP_TO_CV_CALIB); };
"TO.CV.RESET" => { MATCH_OP(E_OP_TO_CV_RESET); };
"TI.PARAM" => { MATCH_OP(E_OP_TI_PARAM); };
"TI.PARAM.QT" => { MATCH_OP(E_OP_TI_PARAM_QT); };
"TI.PARAM.N" => { MATCH_OP(E_OP_TI_PARAM_N); };
"TI.PARAM.SCALE" => { MATCH_OP(E_OP_TI_PARAM_SCALE); };
"TI.PARAM.MAP" => { MATCH_OP(E_OP_TI_PARAM_MAP); };
"TI.IN" => { MATCH_OP(E_OP_TI_IN); };
"TI.IN.QT" => { MATCH_OP(E_OP_TI_IN_QT); };
"TI.IN.N" => { MATCH_OP(E_OP_TI_IN_N); };
"TI.IN.SCALE" => { MATCH_OP(E_OP_TI_IN_SCALE); };
"TI.IN.MAP" => { MATCH_OP(E_OP_TI_IN_MAP); };
"TI.PARAM.CALIB" => { MATCH_OP(E_OP_TI_PARAM_CALIB); };
"TI.IN.CALIB" => { MATCH_OP(E_OP_TI_IN_CALIB); };
"TI.STORE" => { MATCH_OP(E_OP_TI_STORE); };
"TI.RESET" => { MATCH_OP(E_OP_TI_RESET); };
"TI.PARAM.INIT" => { MATCH_OP(E_OP_TI_PARAM_INIT); };
"TI.IN.INIT" => { MATCH_OP(E_OP_TI_IN_INIT); };
"TI.INIT" => { MATCH_OP(E_OP_TI_INIT); };
"TI.PRM" => { MATCH_OP(E_OP_TI_PRM); };
"TI.PRM.QT" => { MATCH_OP(E_OP_TI_PRM_QT); };
"TI.PRM.N" => { MATCH_OP(E_OP_TI_PRM_N); };
"TI.PRM.SCALE" => { MATCH_OP(E_OP_TI_PRM_SCALE); };
"TI.PRM.MAP" => { MATCH_OP(E_OP_TI_PRM_MAP); };
"TI.PRM.INIT" => { MATCH_OP(E_OP_TI_PRM_INIT); };
# fader
"FADER" => { MATCH_OP(E_OP_FADER); };
"FADER.SCALE" => { MATCH_OP(E_OP_FADER_SCALE); };
"FADER.CAL.MIN" => { MATCH_OP(E_OP_FADER_CAL_MIN); };
"FADER.CAL.MAX" => { MATCH_OP(E_OP_FADER_CAL_MAX); };
"FADER.CAL.RESET" => { MATCH_OP(E_OP_FADER_CAL_RESET); };
"FB" => { MATCH_OP(E_OP_FB); };
"FB.S" => { MATCH_OP(E_OP_FB_S); };
"FB.C.MIN" => { MATCH_OP(E_OP_FB_C_MIN); };
"FB.C.MAX" => { MATCH_OP(E_OP_FB_C_MAX); };
"FB.C.R" => { MATCH_OP(E_OP_FB_C_R); };
# ER301
"SC.TR" => { MATCH_OP(E_OP_SC_TR); };
"SC.TR.TOG" => { MATCH_OP(E_OP_SC_TR_TOG); };
"SC.TR.PULSE" => { MATCH_OP(E_OP_SC_TR_PULSE); };
"SC.TR.TIME" => { MATCH_OP(E_OP_SC_TR_TIME); };
"SC.TR.POL" => { MATCH_OP(E_OP_SC_TR_POL); };
"SC.TR.P" => { MATCH_OP(E_OP_SC_TR_P); };
"SC.CV" => { MATCH_OP(E_OP_SC_CV); };
"SC.CV.SLEW" => { MATCH_OP(E_OP_SC_CV_SLEW); };
"SC.CV.SET" => { MATCH_OP(E_OP_SC_CV_SET); };
"SC.CV.OFF" => { MATCH_OP(E_OP_SC_CV_OFF); };
# grid
"G.RST" => { MATCH_OP(E_OP_G_RST); };
"G.CLR" => { MATCH_OP(E_OP_G_CLR); };
"G.ROTATE" => { MATCH_OP(E_OP_G_ROTATE); };
"G.DIM" => { MATCH_OP(E_OP_G_DIM); };
"G.KEY" => { MATCH_OP(E_OP_G_KEY); };
"G.GRP" => { MATCH_OP(E_OP_G_GRP); };
"G.GRP.EN" => { MATCH_OP(E_OP_G_GRP_EN); };
"G.GRP.RST" => { MATCH_OP(E_OP_G_GRP_RST); };
"G.GRP.SW" => { MATCH_OP(E_OP_G_GRP_SW); };
"G.GRP.SC" => { MATCH_OP(E_OP_G_GRP_SC); };
"G.GRPI" => { MATCH_OP(E_OP_G_GRPI); };
"G.LED" => { MATCH_OP(E_OP_G_LED); };
"G.LED.C" => { MATCH_OP(E_OP_G_LED_C); };
"G.REC" => { MATCH_OP(E_OP_G_REC); };
"G.RCT" => { MATCH_OP(E_OP_G_RCT); };
"G.BTN" => { MATCH_OP(E_OP_G_BTN); };
"G.BTX" => { MATCH_OP(E_OP_G_BTX); };
"G.GBT" => { MATCH_OP(E_OP_G_GBT); };
"G.GBX" => { MATCH_OP(E_OP_G_GBX); };
"G.BTN.EN" => { MATCH_OP(E_OP_G_BTN_EN); };
"G.BTN.V" => { MATCH_OP(E_OP_G_BTN_V); };
"G.BTN.L" => { MATCH_OP(E_OP_G_BTN_L); };
"G.BTN.X" => { MATCH_OP(E_OP_G_BTN_X); };
"G.BTN.Y" => { MATCH_OP(E_OP_G_BTN_Y); };
"G.BTNI" => { MATCH_OP(E_OP_G_BTNI); };
"G.BTNV" => { MATCH_OP(E_OP_G_BTNV); };
"G.BTNL" => { MATCH_OP(E_OP_G_BTNL); };
"G.BTNX" => { MATCH_OP(E_OP_G_BTNX); };
"G.BTNY" => { MATCH_OP(E_OP_G_BTNY); };
"G.BTN.PR" => { MATCH_OP(E_OP_G_BTN_PR); };
"G.BTN.SW" => { MATCH_OP(E_OP_G_BTN_SW); };
"G.GBTN.V" => { MATCH_OP(E_OP_G_GBTN_V); };
"G.GBTN.L" => { MATCH_OP(E_OP_G_GBTN_L); };
"G.GBTN.C" => { MATCH_OP(E_OP_G_GBTN_C); };
"G.GBTN.I" => { MATCH_OP(E_OP_G_GBTN_I); };
"G.GBTN.W" => { MATCH_OP(E_OP_G_GBTN_W); };
"G.GBTN.H" => { MATCH_OP(E_OP_G_GBTN_H); };
"G.GBTN.X1" => { MATCH_OP(E_OP_G_GBTN_X1); };
"G.GBTN.X2" => { MATCH_OP(E_OP_G_GBTN_X2); };
"G.GBTN.Y1" => { MATCH_OP(E_OP_G_GBTN_Y1); };
"G.GBTN.Y2" => { MATCH_OP(E_OP_G_GBTN_Y2); };
"G.FDR" => { MATCH_OP(E_OP_G_FDR); };
"G.FDX" => { MATCH_OP(E_OP_G_FDX); };
"G.GFD" => { MATCH_OP(E_OP_G_GFD); };
"G.GFX" => { MATCH_OP(E_OP_G_GFX); };
"G.FDR.EN" => { MATCH_OP(E_OP_G_FDR_EN); };
"G.FDR.V" => { MATCH_OP(E_OP_G_FDR_V); };
"G.FDR.N" => { MATCH_OP(E_OP_G_FDR_N); };
"G.FDR.L" => { MATCH_OP(E_OP_G_FDR_L); };
"G.FDR.X" => { MATCH_OP(E_OP_G_FDR_X); };
"G.FDR.Y" => { MATCH_OP(E_OP_G_FDR_Y); };
"G.FDRI" => { MATCH_OP(E_OP_G_FDRI); };
"G.FDRV" => { MATCH_OP(E_OP_G_FDRV); };
"G.FDRN" => { MATCH_OP(E_OP_G_FDRN); };
"G.FDRL" => { MATCH_OP(E_OP_G_FDRL); };
"G.FDRX" => { MATCH_OP(E_OP_G_FDRX); };
"G.FDRY" => { MATCH_OP(E_OP_G_FDRY); };
"G.FDR.PR" => { MATCH_OP(E_OP_G_FDR_PR); };
"G.GFDR.V" => { MATCH_OP(E_OP_G_GFDR_V); };
"G.GFDR.N" => { MATCH_OP(E_OP_G_GFDR_N); };
"G.GFDR.L" => { MATCH_OP(E_OP_G_GFDR_L); };
"G.GFDR.RN" => { MATCH_OP(E_OP_G_GFDR_RN); };
"G.XYP" => { MATCH_OP(E_OP_G_XYP); };
"G.XYP.X" => { MATCH_OP(E_OP_G_XYP_X); };
"G.XYP.Y" => { MATCH_OP(E_OP_G_XYP_Y); };
# w/
"WS.PLAY" => { MATCH_OP(E_OP_WS_PLAY); };
"WS.REC" => { MATCH_OP(E_OP_WS_REC); };
"WS.CUE" => { MATCH_OP(E_OP_WS_CUE); };
"WS.LOOP" => { MATCH_OP(E_OP_WS_LOOP); };
# disting ex
"EX" => { MATCH_OP(E_OP_EX); };
"EX.PRESET" => { MATCH_OP(E_OP_EX_PRESET); };
"EX.PRE" => { MATCH_OP(E_OP_EX_PRE); };
"EX.SAVE" => { MATCH_OP(E_OP_EX_SAVE); };
"EX.RESET" => { MATCH_OP(E_OP_EX_RESET); };
"EX.ALG" => { MATCH_OP(E_OP_EX_ALG); };
"EX.A" => { MATCH_OP(E_OP_EX_A); };
"EX.CTRL" => { MATCH_OP(E_OP_EX_CTRL); };
"EX.C" => { MATCH_OP(E_OP_EX_C); };
"EX.PARAM" => { MATCH_OP(E_OP_EX_PARAM); };
"EX.P" => { MATCH_OP(E_OP_EX_P); };
"EX.PV" => { MATCH_OP(E_OP_EX_PV); };
"EX.MIN" => { MATCH_OP(E_OP_EX_MIN); };
"EX.MAX" => { MATCH_OP(E_OP_EX_MAX); };
"EX.REC" => { MATCH_OP(E_OP_EX_REC); };
"EX.PLAY" => { MATCH_OP(E_OP_EX_PLAY); };
"EX.AL.P" => { MATCH_OP(E_OP_EX_AL_P); };
"EX.AL.CLK" => { MATCH_OP(E_OP_EX_AL_CLK); };
"EX.M.CH" => { MATCH_OP(E_OP_EX_M_CH); };
"EX.M.N" => { MATCH_OP(E_OP_EX_M_N); };
"EX.M.NO" => { MATCH_OP(E_OP_EX_M_NO); };
"EX.M.PB" => { MATCH_OP(E_OP_EX_M_PB); };
"EX.M.CC" => { MATCH_OP(E_OP_EX_M_CC); };
"EX.M.PRG" => { MATCH_OP(E_OP_EX_M_PRG); };
"EX.M.CLK" => { MATCH_OP(E_OP_EX_M_CLK); };
"EX.M.START" => { MATCH_OP(E_OP_EX_M_START); };
"EX.M.STOP" => { MATCH_OP(E_OP_EX_M_STOP); };
"EX.M.CONT" => { MATCH_OP(E_OP_EX_M_CONT); };
"EX.SB.CH" => { MATCH_OP(E_OP_EX_SB_CH); };
"EX.SB.N" => { MATCH_OP(E_OP_EX_SB_N); };
"EX.SB.NO" => { MATCH_OP(E_OP_EX_SB_NO); };
"EX.SB.PB" => { MATCH_OP(E_OP_EX_SB_PB); };
"EX.SB.CC" => { MATCH_OP(E_OP_EX_SB_CC); };
"EX.SB.PRG" => { MATCH_OP(E_OP_EX_SB_PRG); };
"EX.SB.CLK" => { MATCH_OP(E_OP_EX_SB_CLK); };
"EX.SB.START" => { MATCH_OP(E_OP_EX_SB_START); };
"EX.SB.STOP" => { MATCH_OP(E_OP_EX_SB_STOP); };
"EX.SB.CONT" => { MATCH_OP(E_OP_EX_SB_CONT); };
"EX.VOX.P" => { MATCH_OP(E_OP_EX_VOX_P); };
"EX.VP" => { MATCH_OP(E_OP_EX_VP); };
"EX.VOX" => { MATCH_OP(E_OP_EX_VOX); };
"EX.V" => { MATCH_OP(E_OP_EX_V); };
"EX.VOX.O" => { MATCH_OP(E_OP_EX_VOX_O); };
"EX.VO" => { MATCH_OP(E_OP_EX_VO); };
"EX.NOTE" => { MATCH_OP(E_OP_EX_NOTE); };
"EX.N" => { MATCH_OP(E_OP_EX_N); };
"EX.NOTE.O" => { MATCH_OP(E_OP_EX_NOTE_O); };
"EX.NO" => { MATCH_OP(E_OP_EX_NO); };
"EX.ALLOFF" => { MATCH_OP(E_OP_EX_ALLOFF); };
"EX.AO" => { MATCH_OP(E_OP_EX_AO); };
"EX.T" => { MATCH_OP(E_OP_EX_T); };
"EX.TV" => { MATCH_OP(E_OP_EX_TV); };
"EX.LP.REC" => { MATCH_OP(E_OP_EX_LP_REC); };
"EX.LP.PLAY" => { MATCH_OP(E_OP_EX_LP_PLAY); };
"EX.LP.REV" => { MATCH_OP(E_OP_EX_LP_REV); };
"EX.LP.DOWN" => { MATCH_OP(E_OP_EX_LP_DOWN); };
"EX.LP.CLR" => { MATCH_OP(E_OP_EX_LP_CLR); };
"EX.LP" => { MATCH_OP(E_OP_EX_LP); };
"EX.LP.DOWN?" => { MATCH_OP(E_OP_EX_LP_DOWNQ); };
"EX.LP.REV?" => { MATCH_OP(E_OP_EX_LP_REVQ); };
# seed
"SEED" => { MATCH_OP(E_OP_SEED); };
"RAND.SEED" => { MATCH_OP(E_OP_RAND_SEED); };
"RAND.SD" => { MATCH_OP(E_OP_SYM_RAND_SD); };
"R.SD" => { MATCH_OP(E_OP_SYM_R_SD); };
"TOSS.SEED" => { MATCH_OP(E_OP_TOSS_SEED); };
"TOSS.SD" => { MATCH_OP(E_OP_SYM_TOSS_SD); };
"PROB.SEED" => { MATCH_OP(E_OP_PROB_SEED); };
"PROB.SD" => { MATCH_OP(E_OP_SYM_PROB_SD); };
"DRUNK.SEED" => { MATCH_OP(E_OP_DRUNK_SEED); };
"DRUNK.SD" => { MATCH_OP(E_OP_SYM_DRUNK_SD); };
"P.SEED" => { MATCH_OP(E_OP_P_SEED); };
"P.SD" => { MATCH_OP(E_OP_SYM_P_SD); };
# MIDI
"MI.$" => { MATCH_OP(E_OP_MI_SYM_DOLLAR); };
"MI.LE" => { MATCH_OP(E_OP_MI_LE); };
"MI.LN" => { MATCH_OP(E_OP_MI_LN); };
"MI.LNV" => { MATCH_OP(E_OP_MI_LNV); };
"MI.LV" => { MATCH_OP(E_OP_MI_LV); };
"MI.LVV" => { MATCH_OP(E_OP_MI_LVV); };
"MI.LO" => { MATCH_OP(E_OP_MI_LO); };
"MI.LC" => { MATCH_OP(E_OP_MI_LC); };
"MI.LCC" => { MATCH_OP(E_OP_MI_LCC); };
"MI.LCCV" => { MATCH_OP(E_OP_MI_LCCV); };
"MI.NL" => { MATCH_OP(E_OP_MI_NL); };
"MI.N" => { MATCH_OP(E_OP_MI_N); };
"MI.NV" => { MATCH_OP(E_OP_MI_NV); };
"MI.V" => { MATCH_OP(E_OP_MI_V); };
"MI.VV" => { MATCH_OP(E_OP_MI_VV); };
"MI.OL" => { MATCH_OP(E_OP_MI_OL); };
"MI.O" => { MATCH_OP(E_OP_MI_O); };
"MI.CL" => { MATCH_OP(E_OP_MI_CL); };
"MI.C" => { MATCH_OP(E_OP_MI_C); };
"MI.CC" => { MATCH_OP(E_OP_MI_CC); };
"MI.CCV" => { MATCH_OP(E_OP_MI_CCV); };
"MI.LCH" => { MATCH_OP(E_OP_MI_LCH); };
"MI.NCH" => { MATCH_OP(E_OP_MI_NCH); };
"MI.OCH" => { MATCH_OP(E_OP_MI_OCH); };
"MI.CCH" => { MATCH_OP(E_OP_MI_CCH); };
"MI.CLKD" => { MATCH_OP(E_OP_MI_CLKD); };
"MI.CLKR" => { MATCH_OP(E_OP_MI_CLKR); };
# MODS
# controlflow
"IF" => { MATCH_MOD(E_MOD_IF); };
"ELIF" => { MATCH_MOD(E_MOD_ELIF); };
"ELSE" => { MATCH_MOD(E_MOD_ELSE); };
"L" => { MATCH_MOD(E_MOD_L); };
"W" => { MATCH_MOD(E_MOD_W); };
"EVERY" => { MATCH_MOD(E_MOD_EVERY); };
"SKIP" => { MATCH_MOD(E_MOD_SKIP); };
"OTHER" => { MATCH_MOD(E_MOD_OTHER); };
"EX1" => { MATCH_MOD(E_MOD_EX1); };
"EX2" => { MATCH_MOD(E_MOD_EX2); };
"EX3" => { MATCH_MOD(E_MOD_EX3); };
"EX4" => { MATCH_MOD(E_MOD_EX4); };
# delay
"PROB" => { MATCH_MOD(E_MOD_PROB); };
"DEL" => { MATCH_MOD(E_MOD_DEL); };
"DEL.X" => { MATCH_MOD(E_MOD_DEL_X); };
"DEL.R" => { MATCH_MOD(E_MOD_DEL_R); };
"DEL.G" => { MATCH_MOD(E_MOD_DEL_G); };
"DEL.B" => { MATCH_MOD(E_MOD_DEL_B); };
# matrixarchate
"MA.SELECT" => { MATCH_OP(E_OP_MA_SELECT); };
"MA.STEP" => { MATCH_OP(E_OP_MA_STEP); };
"MA.RESET" => { MATCH_OP(E_OP_MA_RESET); };
"MA.PGM" => { MATCH_OP(E_OP_MA_PGM); };
"MA.ON" => { MATCH_OP(E_OP_MA_ON); };
"MA.PON" => { MATCH_OP(E_OP_MA_PON); };
"MA.OFF" => { MATCH_OP(E_OP_MA_OFF); };
"MA.POFF" => { MATCH_OP(E_OP_MA_POFF); };
"MA.SET" => { MATCH_OP(E_OP_MA_SET); };
"MA.PSET" => { MATCH_OP(E_OP_MA_PSET); };
"MA.COL" => { MATCH_OP(E_OP_MA_COL); };
"MA.PCOL" => { MATCH_OP(E_OP_MA_PCOL); };
"MA.ROW" => { MATCH_OP(E_OP_MA_ROW); };
"MA.PROW" => { MATCH_OP(E_OP_MA_PROW); };
"MA.CLR" => { MATCH_OP(E_OP_MA_CLR); };
"MA.PCLR" => { MATCH_OP(E_OP_MA_PCLR); };
# pattern
"P.MAP" => { MATCH_MOD(E_MOD_P_MAP); };
"PN.MAP" => { MATCH_MOD(E_MOD_PN_MAP); };
# stack
"S" => { MATCH_MOD(E_MOD_S); };
*|;
write data; # write any ragel data here
}%%
// these are our macros that are inserted into the code when Ragel finds a match
#define MATCH_OP(op) { out->tag = OP; out->value = op; no_of_tokens++; }
#define MATCH_MOD(mod) { out->tag = MOD; out->value = mod; no_of_tokens++; }
#define MATCH_NUMBER() \
{ \
out->tag = NUMBER; \
uint8_t base = 0; \
uint8_t binhex = 0; \
if (token[0] == 'X') { \
binhex = 1; \
base = 16; \
token++; \
} \
else if (token[0] == 'B') { \
binhex = 1; \
base = 2; \
token++; \
} \
int32_t val = strtol(token, NULL, base); \
if (binhex) val = (int16_t)((uint16_t)val); \
val = val > INT16_MAX ? INT16_MAX : val; \
val = val < INT16_MIN ? INT16_MIN : val; \
out->value = val; \
no_of_tokens++; \
}
// matches a single token, out contains the token, return value indicates
// success or failure
bool match_token(const char *token, const size_t len, tele_data_t *out) {
// required ragel declarations
int cs; // machine state
int act; // used with '=>'
const char* ts; // token start
const char* te; // token end
const char* p = token; // pointer to data
const char* pe = token + len; // pointer to end of data
const char* eof = pe; // pointer to eof
(void)match_token_en_main; // fix unused variable warning
(void)ts; // fix unused variable warning
int no_of_tokens = 0;
%%{
write init; # write initialisation
write exec; # run the machine
}%%
// Ragel errors
if (cs == match_token_error || cs < match_token_first_final) {
return false;
}
// only 1 token!
else if (no_of_tokens != 1) {
return false;
}
else {
return true;
}
}