mirror of
https://github.com/russolsen/sallyforth
synced 2024-12-25 21:58:18 +01:00
Removed unused lex module.
This commit is contained in:
parent
16d9bdf352
commit
62acb4ab95
1 changed files with 0 additions and 57 deletions
|
@ -1,57 +0,0 @@
|
|||
def is_string(token):
|
||||
return token[0] == '"' or token[0] == "'"
|
||||
|
||||
def is_space(ch):
|
||||
return ch == ' ' or ch == '\t' or ch == '\n'
|
||||
|
||||
class Tokenizer:
|
||||
def __init__(self, forth):
|
||||
self.forth = forth
|
||||
|
||||
def tokenize(self, s):
|
||||
raw_tokens = self.raw_tokenize(s)
|
||||
return self.forth.macro_expand_tokens(raw_tokens)
|
||||
|
||||
def raw_tokenize(self, s):
|
||||
state = 'start'
|
||||
token = ''
|
||||
tokens = []
|
||||
for ch in s:
|
||||
#print(f'Loop state {state} token {token} ch {ch}')
|
||||
if state == 'start' and ch == '(':
|
||||
state = 'comment'
|
||||
elif state == 'start' and ch == '\\':
|
||||
state = 'line_comment'
|
||||
elif state == 'line_comment' and ch == '\n':
|
||||
state = 'start'
|
||||
elif state == 'comment' and ch == ')':
|
||||
state = 'start'
|
||||
elif state in ['comment', 'line_comment']:
|
||||
continue
|
||||
elif state == 'start' and is_space(ch):
|
||||
continue
|
||||
elif state == 'start' and ch == "'":
|
||||
token = ch
|
||||
state = 's_string'
|
||||
elif state == 'start' and ch == '"':
|
||||
token = ch
|
||||
state = 'string'
|
||||
elif state == 'start':
|
||||
token = ch
|
||||
state = 'word'
|
||||
elif state == 'string' and ch == '"':
|
||||
tokens.append(token)
|
||||
state = 'start'
|
||||
token = ''
|
||||
elif (state in ['word', 's_string']) and is_space(ch):
|
||||
tokens.append(token)
|
||||
state = 'start'
|
||||
token = ''
|
||||
elif state == 'word' or state == 'string' or state == 's_string':
|
||||
token += ch
|
||||
else:
|
||||
print(f'State: [{state}] token: [{token}] ch: [{ch}]???')
|
||||
state = 'start'
|
||||
if len(token) > 0:
|
||||
tokens.append(token)
|
||||
return tokens
|
Loading…
Reference in a new issue