/~ --- Token definitions --- ~/ /~ Characters to be ignored ~/ ! ' |\t' ; /~ Non-associative tokens ~/ '\(' '\)' '[0-9]+' INT '[0-9]+\.[0-9]*|[0-9]*\.[0-9]+' FLOAT '\_\_[a-zA-Z0-9]+' PARAM '[a-zA-Z]+(\_*[a-zA-Z0-9]+)*' VAR '\&[a-zA-Z]+\;' HTML '\"[a-zA-Z0-9äüöß\=\.\ ]*\"' STRING ; /~ Left-associative tokens, from lowest to highest precedence ~/ < '\+' '\-'; < '\*' '/'; < '^'; < '\,'; < '<=' '>=' '==' '!=' '<' '>'; < '!'; < '\|\|' '\&\&'; ## /~ --- Grammar specification --- ~/ p: e [* %% = JXG.GeogebraReader.ggbAct('end', %1); *] ; e: '(' e ',' e ')' [* %% = JXG.GeogebraReader.ggbAct('coord', %2, %4, element); *] /~ element unabhaengig ~/ | e '<=' e [* %% = JXG.GeogebraReader.ggbAct('le', %1, %3); *] | e '>=' e [* %% = JXG.GeogebraReader.ggbAct('ge', %1, %3); *] | e '==' e [* %% = JXG.GeogebraReader.ggbAct('eq', %1, %3); *] | e '!=' e [* %% = JXG.GeogebraReader.ggbAct('neq', %1, %3); *] | e '<' e [* %% = JXG.GeogebraReader.ggbAct('lt', %1, %3); *] | e '>' e [* %% = JXG.GeogebraReader.ggbAct('gt', %1, %3); *] | e '+' e [* %% = JXG.GeogebraReader.ggbAct('add', %1, %3); *] | e '-' e [* %% = JXG.GeogebraReader.ggbAct('sub', %1, %3); *] | '!' e [* %% = JXG.GeogebraReader.ggbAct('neg', %2); *] | e '^' e [* %% = JXG.GeogebraReader.ggbAct('pow', %1, %3); *] | e '||' e [* %% = JXG.GeogebraReader.ggbAct('or', %1, %3); *] | e '&&' e [* %% = JXG.GeogebraReader.ggbAct('and', %1, %3); *] | e '*' e [* %% = JXG.GeogebraReader.ggbAct('mul', %1, %3); *] | e '/' e [* %% = JXG.GeogebraReader.ggbAct('div', %1, %3); *] | '-' e &'*' [* %% = JXG.GeogebraReader.ggbAct('negmult', %2); *] | '(' e ')' [* %% = JXG.GeogebraReader.ggbAct('bra', %2); *] | STRING '+' e [* %% = JXG.GeogebraReader.ggbAct('string', %1, %3); *] | INT [* %% = JXG.GeogebraReader.ggbAct('int', %1); *] | FLOAT [* %% = JXG.GeogebraReader.ggbAct('float', %1); *] | PARAM [* %% = JXG.GeogebraReader.ggbAct('param', %1); *] | HTML [* %% = JXG.GeogebraReader.ggbAct('html', %1); *] | STRING [* %% = JXG.GeogebraReader.ggbAct('string', %1); *] | VAR '(' e ')' [* %% = JXG.GeogebraReader.ggbAct('var', %1, %3); *] | VAR [* %% = JXG.GeogebraReader.ggbAct('var', %1); *] ;