It builds

This commit is contained in:
Aidan Hahn 2019-11-28 20:07:28 -08:00
parent 7aa80376bb
commit 7e175dec95
No known key found for this signature in database
GPG key ID: 327711E983899316
7 changed files with 52 additions and 45 deletions

View file

@ -2,6 +2,7 @@ package shsh;
import (
"strings"
"unicode"
)
type token_t int
@ -15,7 +16,7 @@ const (
type Token struct {
next *Token
tag token_t
int position
position int
_inner interface{}
}
@ -25,9 +26,9 @@ func Lex(input string) *Token {
delim := ' '
var tok strings.Builder
iter_alloced := false
is_list = false
is_str = false
is_num = true
is_list := false
is_str := false
is_num := true
for pos, char := range input {
switch char {
@ -41,24 +42,24 @@ func Lex(input string) *Token {
case delim:
*iter = new(Token)
*iter.position = pos
(*iter).position = pos
if is_list {
*iter._inner = Lex(tok.String())
(*iter)._inner = Lex(tok.String())
is_list = false
*iter._inner = LIST
(*iter)._inner = LIST
} else {
*iter._inner = tok.String()
if is_string {
*iter.tag = STRING
(*iter)._inner = tok.String()
if is_str {
(*iter).tag = STRING
is_str = false
} else if is_num {
*iter.tag = NUMBER
(*iter).tag = NUMBER
} else {
*iter.tag = SYMBOL
(*iter).tag = SYMBOL
}
}
@ -66,12 +67,12 @@ func Lex(input string) *Token {
delim = ' '
default:
is_num = is_num && IsDigit(char)
is_num = is_num && unicode.IsDigit(char)
tok.WriteRune(char)
}
if iter_alloced {
iter = &(*iter.next)
iter = &((*iter).next)
iter_alloced = false
tok.Reset()
}