diff options
author | Sunil Shetye | 2018-06-10 22:07:21 +0530 |
---|---|---|
committer | Sunil Shetye | 2018-06-10 22:07:21 +0530 |
commit | abf82caa54d8cf87e2f31aec7cc8d9cdedf90f81 (patch) | |
tree | 7ff742c9b3efcc8fe1c6a9528622c5dc77a23819 /sci2jslex.py | |
parent | 89187d41b6688f522f09ad59a8e223c82b8af846 (diff) | |
download | sci2js-abf82caa54d8cf87e2f31aec7cc8d9cdedf90f81.tar.gz sci2js-abf82caa54d8cf87e2f31aec7cc8d9cdedf90f81.tar.bz2 sci2js-abf82caa54d8cf87e2f31aec7cc8d9cdedf90f81.zip |
add Makefile
add support for scicos functions
Diffstat (limited to 'sci2jslex.py')
-rwxr-xr-x | sci2jslex.py | 88 |
1 files changed, 49 insertions, 39 deletions
diff --git a/sci2jslex.py b/sci2jslex.py index cb14511a..7150037e 100755 --- a/sci2jslex.py +++ b/sci2jslex.py @@ -25,6 +25,16 @@ syntaxtokens = { 'if': 'IF', 'resume': 'RESUME', 'return': 'RETURN', + 'scicos': 'SCICOS', + 'scicos_block': 'SCICOS_BLOCK', + 'scicos_context': 'SCICOS_CONTEXT', + 'scicos_debug': 'SCICOS_DEBUG', + 'scicos_diagram': 'SCICOS_DIAGRAM', + 'scicos_getvalue': 'SCICOS_GETVALUE', + 'scicos_graphics': 'SCICOS_GRAPHICS', + 'scicos_link': 'SCICOS_LINK', + 'scicos_model': 'SCICOS_MODEL', + 'scicos_params': 'SCICOS_PARAMS', 'select': 'SELECT', 'then': 'THEN', 'where': 'WHERE', @@ -75,14 +85,6 @@ def t_COMMENT(t): r'\.\.+[ \t]*(//.*)?(\n|$)|//.*' pass -def t_EOL(t): - r'\n' - global afterarray, brackets - if brackets == 0: - afterarray = False - t.state = 'EOL' - return t - def t_NUMBER(t): r'-?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?' global afterarray @@ -90,6 +92,27 @@ def t_NUMBER(t): t.state = 'NUMBER' return t +def t_PREVAR(t): + r'%[a-zA-Z_][a-zA-Z0-9_]*' + global afterarray + afterarray = False + t.type = predefinedvariables.get(t.value[1:], 'PREVAR') + return t + +def t_VAR(t): + r'[a-zA-Z_][a-zA-Z0-9_]*' + global afterarray + afterarray = True + t.type = syntaxtokens.get(t.value, 'VAR') + return t + +def t_COMPARISON(t): + r'<>|[<>~=]=|[<>]' + global afterarray + afterarray = False + t.state = 'COMPARISON' + return t + def t_LASTINDEX(t): r'\$' global afterarray @@ -97,6 +120,14 @@ def t_LASTINDEX(t): t.state = 'LASTINDEX' return t +def t_EOL(t): + r'\n' + global afterarray, brackets + if brackets == 0: + afterarray = False + t.state = 'EOL' + return t + def t_DOT(t): r'\.' global afterarray @@ -111,13 +142,6 @@ def t_OPERATOR(t): t.state = 'OPERATOR' return t -def t_COMPARISON(t): - r'<>|[<>~=]=|[<>]' - global afterarray - afterarray = False - t.state = 'COMPARISON' - return t - def t_COMMA(t): r',' global afterarray @@ -157,20 +181,6 @@ def t_CLOSEBRACKET(t): t.state = 'CLOSEBRACKET' return t -def t_VAR(t): - r'[a-zA-Z_][a-zA-Z0-9_]*' - global afterarray - afterarray = True - t.type = syntaxtokens.get(t.value, 'VAR') - return t - -def t_PREVAR(t): - r'%[a-zA-Z_][a-zA-Z0-9_]*' - global afterarray - afterarray = False - t.type = predefinedvariables.get(t.value[1:], 'PREVAR') - return t - def t_SEMICOLON(t): r';' global afterarray @@ -235,6 +245,16 @@ def t_dqstring_COMMENT(t): r'\.\.+[ \t]*(//.*)?\n' pass +def t_qstring_char(t): + r'\.|[^\'".]+' + global qstring + qstring += t.value + +def t_dqstring_char(t): + r'\.|[^\'".]+' + global dqstring + dqstring += t.value + def t_qstring_quote(t): r'\'\'|""' global qstring @@ -263,16 +283,6 @@ def t_dqstring_end(t): t.value = dqstring return t -def t_qstring_char(t): - r'\.|[^\'".]+' - global qstring - qstring += t.value - -def t_dqstring_char(t): - r'\.|[^\'".]+' - global dqstring - dqstring += t.value - def t_qstring_error(t): print("Illegal character '%s' in qstring" % t.value[0]) t.lexer.skip(1) |