X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpreter/preprocessor/faust-0.9.47mr3/compiler/parser/faustlexer.l diff --git a/interpreter/preprocessor/faust-0.9.47mr3/compiler/parser/faustlexer.l b/interpreter/preprocessor/faust-0.9.47mr3/compiler/parser/faustlexer.l new file mode 100644 index 0000000..9286637 --- /dev/null +++ b/interpreter/preprocessor/faust-0.9.47mr3/compiler/parser/faustlexer.l @@ -0,0 +1,213 @@ +/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4 -*- */ + +/* Scanner for the Faust language */ + +%{ +#include "tree.hh" +#include "faustparser.hpp" +#define YY_NO_UNISTD_H 1 +extern int isatty (int ); +%} + +DIGIT [0-9] +ID [a-zA-Z][_a-zA-Z0-9]* +LETTER [a-zA-Z] +NUMBER ({DIGIT}+"."{DIGIT}*|"."{DIGIT}+|{DIGIT}+) +WSPACE [ \t\n] +TMACRO \\{ID}(\[(\ *({ID}|{NUMBER}),?\ *)\])?(\{(\ *({ID}|{NUMBER}),?\ *)*\})* + +%option yylineno +%x comment +%x doc +%x lst + + +%% + + +"/*" BEGIN(comment); +[^*\x0a\x0d]* /* eat anything that's not a '*' */ +"*"+[^*/\x0a\x0d]* /* eat up '*'s not followed by '/'s */ +\x0a\x0d /* no need to increment yylineno here */ +\x0a /* no need to increment yylineno here */ +\x0d /* no need to increment yylineno here */ +"*"+"/" BEGIN(INITIAL); + +"" { BEGIN(doc); return BDOC; } +. return DOCCHAR; /* char by char, may be slow ?? */ +\n return DOCCHAR; /* keep newline chars */ +"" return NOTICE; /* autoclosing tag */ +"" return NOTICE; /* autoclosing tag */ +""" { BEGIN(INITIAL); return BEQN; } +"" { BEGIN(doc); return EEQN; } +"" { BEGIN(INITIAL); return BDGM; } +"" { BEGIN(doc); return EDGM; } +"" { BEGIN(INITIAL); return BMETADATA; } +"" { BEGIN(doc); return EMETADATA; } +"" { BEGIN(INITIAL); return EDOC; } + +"true" return LSTTRUE; +"false" return LSTFALSE; +"dependencies" return LSTDEPENDENCIES; +"mdoctags" return LSTMDOCTAGS; +"distributed" return LSTDISTRIBUTED; +"=" return LSTEQ; +"\"" return LSTQ; +"/>" { BEGIN(doc); return ELST; } + + +{DIGIT}+ return INT; + + +{DIGIT}+"."{DIGIT}* return FLOAT; +{DIGIT}+"."{DIGIT}*e[-+]?{DIGIT}+ return FLOAT; +{DIGIT}+e[-+]?{DIGIT}+ return FLOAT; +"."{DIGIT}+ return FLOAT; +"."{DIGIT}+e[-+]?{DIGIT}+ return FLOAT; + + +":" return SEQ; +"," return PAR; +"<:" return SPLIT; +"+>" return MIX; +":>" return MIX; +"~" return REC; + +"+" return ADD; +"-" return SUB; +"*" return MUL; +"/" return DIV; +"%" return MOD; +"@" return FDELAY; +"'" return DELAY1; + +"&" return AND; +"|" return OR; +"xor" return XOR; + +"<<" return LSH; +">>" return RSH; + +"<" return LT; +"<=" return LE; +">" return GT; +">=" return GE; +"==" return EQ; +"!=" return NE; + +"_" return WIRE; +"!" return CUT; + +";" return ENDDEF; +"=" return DEF; +"(" return LPAR; +")" return RPAR; +"{" return LBRAQ; +"}" return RBRAQ; +"[" return LCROC; +"]" return RCROC; + +"\\" return LAMBDA; +"." return DOT; +"with" return WITH; + +"mem" return MEM; +"prefix" return PREFIX; + +"int" return INTCAST; +"float" return FLOATCAST; + +"rdtable" return RDTBL; +"rwtable" return RWTBL; + +"select2" return SELECT2; +"select3" return SELECT3; + +"ffunction" return FFUNCTION; +"fconstant" return FCONSTANT; +"fvariable" return FVARIABLE; + +"button" return BUTTON; +"checkbox" return CHECKBOX; +"vslider" return VSLIDER; +"hslider" return HSLIDER; +"nentry" return NENTRY; +"vgroup" return VGROUP; +"hgroup" return HGROUP; +"tgroup" return TGROUP; +"vbargraph" return VBARGRAPH; +"hbargraph" return HBARGRAPH; +"attach" return ATTACH; + +"acos" return ACOS; +"asin" return ASIN; +"atan" return ATAN; +"atan2" return ATAN2; + +"cos" return COS; +"sin" return SIN; +"tan" return TAN; + +"exp" return EXP; +"log" return LOG; +"log10" return LOG10; +"^" return POWOP; +"pow" return POWFUN; +"sqrt" return SQRT; + +"abs" return ABS; +"min" return MIN; +"max" return MAX; + +"fmod" return FMOD; +"remainder" return REMAINDER; + +"floor" return FLOOR; +"ceil" return CEIL; +"rint" return RINT; + +"seq" return ISEQ; +"par" return IPAR; +"sum" return ISUM; +"prod" return IPROD; + +"import" return IMPORT; +"component" return COMPONENT; +"library" return LIBRARY; +"environment" return ENVIRONMENT; + +"declare" return DECLARE; + +"serialize" return SERIALIZE; +"vectorize" return VECTORIZE; +"#" return HASH; +"rate" return RATE; + +"up" return UPSAMPLE; +"down" return DOWNSAMPLE; + +"case" return CASE; +"=>" return ARROW; + +_{ID} return IDENT; +{ID} return IDENT; + +"\""[^\"]*"\"" return STRING; + +"<"{LETTER}*"."{LETTER}">" return FSTRING; +"<"{LETTER}*">" return FSTRING; + + +"//"[^\x0a\x0d]* /* eat up one-line comments */ + +[ \t\x0a\x0d]+ /* eat up whitespace */ + +<> yyterminate(); + +. printf("extra text is : %s\n", yytext); return EXTRA; + + +%% +int yywrap() { return 1; } +