summaryrefslogtreecommitdiff
path: root/sci2jslex.py
diff options
context:
space:
mode:
authorSunil Shetye2018-07-03 17:07:25 +0530
committerSunil Shetye2018-07-03 20:58:04 +0530
commitc870c0a9fcbe03cf7e34be1bfa886f5fff3569ab (patch)
tree56a2b627620b76a8782fe16bd0b17b1abefa7887 /sci2jslex.py
parent6cd012d0974046a664c0603fd39abd7610d06156 (diff)
downloadsci2js-c870c0a9fcbe03cf7e34be1bfa886f5fff3569ab.tar.gz
sci2js-c870c0a9fcbe03cf7e34be1bfa886f5fff3569ab.tar.bz2
sci2js-c870c0a9fcbe03cf7e34be1bfa886f5fff3569ab.zip
prepare to split function names
Diffstat (limited to 'sci2jslex.py')
-rwxr-xr-xsci2jslex.py49
1 files changed, 47 insertions, 2 deletions
diff --git a/sci2jslex.py b/sci2jslex.py
index 16f60e4d..9dd6a73b 100755
--- a/sci2jslex.py
+++ b/sci2jslex.py
@@ -227,6 +227,27 @@ FUNCTION_NAMES = {
'zeros',
}
+BOOLEAN_FUNCTION_NAMES = {
+}
+
+DOUBLE_FUNCTION_NAMES = {
+}
+
+MATRIX_DOUBLE_FUNCTION_NAMES = {
+}
+
+NULL_FUNCTION_NAMES = {
+}
+
+OBJECT_FUNCTION_NAMES = {
+}
+
+STRING_FUNCTION_NAMES = {
+}
+
+VECTOR_DOUBLE_FUNCTION_NAMES = {
+}
+
OBJECTS = {
# 'PREVAR_scicos_context': 'PREVAR_SCICOS_CONTEXT',
# 'arg1': 'ARG1',
@@ -246,6 +267,7 @@ JOBTYPES = {
tokens = [
'ADDITION',
'ASSIGNMENT',
+ 'BOOLEAN_FUNCTIONNAME',
'CLOSEBRACKET',
'CLOSEOPENBRACKET',
'CLOSESQBRACKET',
@@ -253,22 +275,28 @@ tokens = [
'COMMA',
'COMPARISON',
'DOT',
+ 'DOUBLE_FUNCTIONNAME',
'DQSTRING',
'EOL',
'FUNCTIONNAME',
'LASTINDEX',
'LOGICAL',
+ 'MATRIX_DOUBLE_FUNCTIONNAME',
'MULTIPLICATION',
'NOT',
+ 'NULL_FUNCTIONNAME',
'NUMBER',
+ 'OBJECT_FUNCTIONNAME',
'OPENBRACKET',
'OPENSQBRACKET',
'PREVAR',
'QSTRING',
'SEMICOLON',
'SPACE',
+ 'STRING_FUNCTIONNAME',
'TRANSPOSE',
'VAR',
+ 'VECTOR_DOUBLE_FUNCTIONNAME',
] + list(SYNTAX_TOKENS.values()) + list(set(PREDEFINED_VARIABLES.values())) + list(OBJECTS.values()) + list(JOBTYPES.values())
states = (
@@ -344,8 +372,25 @@ def t_VAR(t):
if vartype is None:
vartype = OBJECTS.get(t.value)
if vartype is None:
- vartype = 'FUNCTIONNAME' if t.value in FUNCTION_NAMES else 'VAR'
- t.lexer.afterarray = vartype != 'FUNCTIONNAME'
+ if t.value in BOOLEAN_FUNCTION_NAMES:
+ vartype = 'BOOLEAN_FUNCTIONNAME'
+ elif t.value in DOUBLE_FUNCTION_NAMES:
+ vartype = 'DOUBLE_FUNCTIONNAME'
+ elif t.value in MATRIX_DOUBLE_FUNCTION_NAMES:
+ vartype = 'MATRIX_DOUBLE_FUNCTIONNAME'
+ elif t.value in NULL_FUNCTION_NAMES:
+ vartype = 'NULL_FUNCTIONNAME'
+ elif t.value in OBJECT_FUNCTION_NAMES:
+ vartype = 'OBJECT_FUNCTIONNAME'
+ elif t.value in STRING_FUNCTION_NAMES:
+ vartype = 'STRING_FUNCTIONNAME'
+ elif t.value in VECTOR_DOUBLE_FUNCTION_NAMES:
+ vartype = 'VECTOR_DOUBLE_FUNCTIONNAME'
+ elif t.value in FUNCTION_NAMES:
+ vartype = 'FUNCTIONNAME'
+ else:
+ vartype = 'VAR'
+ t.lexer.afterarray = vartype == 'VAR'
t.lexer.aftercase = vartype == 'CASE'
t.type = vartype
return t