%option c++ %option noyywrap %option prefix="stm" %{ #include "graphloader.h" int yywrap(){return 0;} int pushed_state; %} %s COMMENT %s ADD_PROCESSORS %s AWAIT_PROCESSOR_SEPARATOR %s AWAIT_PROCESSOR_NAME %s ADD_DEPENDENCIES %s AWAIT_DEPENDENCY_SEPARATOR %s AWAIT_DEPENDENCY_SLOT %s AWAIT_DEPENDENCY_LINK %s AWAIT_DEPENDENCY_SOURCE %s SET_PARAMETERS %s AWAIT_PARAMETER_SEPARATOR %s AWAIT_PARAMETER_NAME %s AWAIT_PARAMETER_EQUALS %s AWAIT_PARAMETER_VALUE %s AWAIT_OUTPUT EOL [\n] whitespace [ \t]* comment # string [\"][a-z0-9_ \t]*[\"] float [-]?[0-9]+\.[0-9]* chromaticity <[ \t]*{float},[ \t]*{float}[ \t]*> integer [-]?[0-9]+ true [Tt][Rr][Uu][Ee] false [Ff][Aa][Ll][Ss][Ee] separator [:] equals [=] link [<][-] %% {whitespace} <> {return graphloader::END;} {EOL} {} {EOL} { BEGIN pushed_state; } {comment} { pushed_state = INITIAL; BEGIN COMMENT; } PROCESSORS: { BEGIN ADD_PROCESSORS; } {integer} { BEGIN AWAIT_PROCESSOR_SEPARATOR; return graphloader::PROCESSOR_ID; } {comment} { pushed_state = ADD_PROCESSORS; BEGIN COMMENT; } {equals} { BEGIN AWAIT_PROCESSOR_NAME; } {string} { BEGIN ADD_PROCESSORS; return graphloader::PROCESSOR_NAME; } DEPENDENCIES: { BEGIN ADD_DEPENDENCIES; } {comment} { pushed_state = ADD_DEPENDENCIES; BEGIN COMMENT; } {integer} { BEGIN AWAIT_DEPENDENCY_SEPARATOR; return graphloader::DEP_DEST; } {separator} { BEGIN AWAIT_DEPENDENCY_SLOT; } {integer} { BEGIN AWAIT_DEPENDENCY_LINK; return graphloader::DEP_SLOT; } {link} { BEGIN AWAIT_DEPENDENCY_SOURCE; } {integer} { BEGIN ADD_DEPENDENCIES; return graphloader::DEP_SOURCE; } PARAMETERS: { BEGIN SET_PARAMETERS; } {comment} { pushed_state = SET_PARAMETERS; BEGIN COMMENT; } {integer} { BEGIN AWAIT_PARAMETER_SEPARATOR; return graphloader::PARAM_DEST; } {separator} { BEGIN AWAIT_PARAMETER_NAME; } {string} { BEGIN AWAIT_PARAMETER_EQUALS; return graphloader::PARAM_NAME; } {equals} { BEGIN AWAIT_PARAMETER_VALUE; } {chromaticity} { BEGIN SET_PARAMETERS; return graphloader::PARAM_VALUE_CHROMATICITY; } {float} { BEGIN SET_PARAMETERS; return graphloader::PARAM_VALUE_FLOAT; } {integer} { BEGIN SET_PARAMETERS; return graphloader::PARAM_VALUE_INT; } {true} { BEGIN SET_PARAMETERS; return graphloader::PARAM_VALUE_BOOL; } {false} { BEGIN SET_PARAMETERS; return graphloader::PARAM_VALUE_BOOL; } {string} { BEGIN SET_PARAMETERS; return graphloader::PARAM_VALUE_STRING; } OUTPUT: { BEGIN AWAIT_OUTPUT; } {integer} { return graphloader::OUTPUT_ID; } %%