summaryrefslogtreecommitdiff
path: root/sci2jslex.py
diff options
context:
space:
mode:
authorSunil Shetye2018-06-10 22:07:21 +0530
committerSunil Shetye2018-06-10 22:07:21 +0530
commitabf82caa54d8cf87e2f31aec7cc8d9cdedf90f81 (patch)
tree7ff742c9b3efcc8fe1c6a9528622c5dc77a23819 /sci2jslex.py
parent89187d41b6688f522f09ad59a8e223c82b8af846 (diff)
downloadsci2js-abf82caa54d8cf87e2f31aec7cc8d9cdedf90f81.tar.gz
sci2js-abf82caa54d8cf87e2f31aec7cc8d9cdedf90f81.tar.bz2
sci2js-abf82caa54d8cf87e2f31aec7cc8d9cdedf90f81.zip
add Makefile
add support for scicos functions
Diffstat (limited to 'sci2jslex.py')
-rwxr-xr-xsci2jslex.py88
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)