diff options
author | Sunil Shetye | 2018-06-19 23:22:39 +0530 |
---|---|---|
committer | Sunil Shetye | 2018-06-20 15:22:36 +0530 |
commit | 35feb0caf42bbdae9cd5494ca5624c2b01a5b688 (patch) | |
tree | 8547e8b4848202c1224c7f0e61352c24b551f59c /sci2jslex.py | |
parent | 449b9f0efaa3dc754efa17285f3e560989366144 (diff) | |
download | sci2js-35feb0caf42bbdae9cd5494ca5624c2b01a5b688.tar.gz sci2js-35feb0caf42bbdae9cd5494ca5624c2b01a5b688.tar.bz2 sci2js-35feb0caf42bbdae9cd5494ca5624c2b01a5b688.zip |
add function tokens
Diffstat (limited to 'sci2jslex.py')
-rwxr-xr-x | sci2jslex.py | 67 |
1 files changed, 48 insertions, 19 deletions
diff --git a/sci2jslex.py b/sci2jslex.py index f0bb000e..17651d0a 100755 --- a/sci2jslex.py +++ b/sci2jslex.py @@ -16,7 +16,6 @@ import ply.lex as lex ''' keep track of how many open brackets have been encountered so far ''' BRACKET_STACK = [' '] -LAST_BRACKET = BRACKET_STACK[-1] ''' keep current string in memory ''' qstring = '' @@ -64,7 +63,40 @@ predefinedvariables = { 't': 'PREVAR_BOOLEAN', } +functioncalls = { + 'ANDLOG_f', + 'CLKIN_f', + 'CLKOUT_f', + 'CLKSOM_f', + 'CLKSPLIT_f', + 'IFTHEL_f', + 'MFCLCK_f', + 'check_io', + 'eval', + 'execstr', + 'int', + 'length', + 'list', + 'message', + 'min', + 'modelica', + 'ones', + 'or', + 'sci2exp', + 'set_io', + 'size', + 'standard_define', + 'string', + 'sum', + 'typeof', +} + +objects = { + 'arg1', +} + tokens = [ + 'ADDITION', 'ASSIGNMENT', 'CLOSEBRACKET', 'CLOSEOPENBRACKET', @@ -74,19 +106,19 @@ tokens = [ 'COMPARISON', 'DOT', 'DQSTRING', - 'SPACE', 'EOL', + 'FUNCTIONCALL', 'LASTINDEX', 'LOGICAL', + 'MULTIPLICATION', 'NOT', 'NUMBER', 'OPENBRACKET', 'OPENSQBRACKET', - 'MULTIPLICATION', - 'ADDITION', 'PREVAR', 'QSTRING', 'SEMICOLON', + 'SPACE', 'TRANSPOSE', 'VAR', ] + list(syntaxtokens.values()) + list(set(predefinedvariables.values())) @@ -100,7 +132,7 @@ def t_COMMA(t): r'[ \t]*,([ \t]*(//.*)?\n?)*' global afterarray afterarray = False - if LAST_BRACKET != ' ': + if BRACKET_STACK[-1] != ' ': return t t.type = 'EOL' return t @@ -109,18 +141,17 @@ def t_SEMICOLON(t): r'[ \t]*;([ \t]*(//.*)?\n?)*' global afterarray afterarray = False - if LAST_BRACKET != ' ': + if BRACKET_STACK[-1] != ' ': return t t.type = 'EOL' return t def t_CLOSESQBRACKET(t): r'([ \t]*\.\.+[ \t]*\n)?[ \t]*\]' - global afterarray, LAST_BRACKET + global afterarray afterarray = True if BRACKET_STACK.pop() != '[': print("Syntax error: Mismatched ]") - LAST_BRACKET = BRACKET_STACK[-1] return t def t_CLOSEOPENBRACKET(t): @@ -131,11 +162,10 @@ def t_CLOSEOPENBRACKET(t): def t_CLOSEBRACKET(t): r'([ \t]*\.\.+[ \t]*\n)?[ \t]*\)' - global afterarray, LAST_BRACKET + global afterarray afterarray = True if BRACKET_STACK.pop() != '(': print("Syntax error: Mismatched )") - LAST_BRACKET = BRACKET_STACK[-1] return t def t_COMMENT(t): @@ -177,10 +207,11 @@ def t_LASTINDEX(t): def t_EOL(t): r'[ \t]*\n([ \t]*(//.*)?\n?)*' global afterarray - if LAST_BRACKET == ' ': + lastbracket = BRACKET_STACK[-1] + if lastbracket == ' ': afterarray = False return t - if LAST_BRACKET == '[': + if lastbracket == '[': t.type = 'SPACE' return t @@ -204,18 +235,16 @@ def t_ADDITION(t): def t_OPENSQBRACKET(t): r'\[([ \t]*(//.*)?\n?)*' - global afterarray, LAST_BRACKET + global afterarray afterarray = False - LAST_BRACKET = '[' - BRACKET_STACK.append(LAST_BRACKET) + BRACKET_STACK.append('[') return t def t_OPENBRACKET(t): r'\(([ \t]*(//.*)?\n?)*' - global afterarray, LAST_BRACKET + global afterarray afterarray = False - LAST_BRACKET = '(' - BRACKET_STACK.append(LAST_BRACKET) + BRACKET_STACK.append('(') return t def t_NOT(t): @@ -244,7 +273,7 @@ def t_COLON(t): def t_SPACE(t): r'[ \t]+' - if LAST_BRACKET == '[': + if BRACKET_STACK[-1] == '[': return t def t_error(t): |