refactored print loop, project structure

This commit is contained in:
Aidan Hahn 2019-11-29 00:02:00 -08:00
parent aaa0a8a507
commit b0d9bb4643
No known key found for this signature in database
GPG key ID: 327711E983899316
9 changed files with 14 additions and 25 deletions

Binary file not shown.

0
License Normal file
View file

0
Makefile Normal file
View file

0
Readme Normal file
View file

11
cmd/print_ast.go Normal file
View file

@ -0,0 +1,11 @@
package main
import (
"strings"
"os"
"git.callpipe.com/aidan/shsh"
)
func main() {
shsh.PrintSExpression(shsh.Lex(strings.Join(os.Args[1:], " ")))
}

View file

@ -1,14 +0,0 @@
package main
import (
"bufio"
"os"
"git.callpipe.com/aidan/shsh"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
shsh.PrintSExpression(shsh.Lex(scanner.Text()))
}
}

View file

@ -13,12 +13,10 @@ func FmtToken(arg *Token) string {
switch arg.tag { switch arg.tag {
case LIST: case LIST:
return fmt.Sprintf("(%s, List @ %p, %d)%s", "LIST", arg._inner, return fmt.Sprintf("(%s, List @ %p)%s", "LIST", arg._inner, suffix)
arg.position, suffix)
default: default:
return fmt.Sprintf("(%s, %s, %d)%s", GetTagAsStr(arg.tag), arg._inner, return fmt.Sprintf("(%s, %s)%s", GetTagAsStr(arg.tag), arg._inner, suffix)
arg.position, suffix)
} }
} }
@ -54,12 +52,6 @@ loop:
for iter := i; iter != nil; iter = iter.next { for iter := i; iter != nil; iter = iter.next {
if iter.tag == LIST { if iter.tag == LIST {
lists.Push(iter._inner.(*Token)) lists.Push(iter._inner.(*Token))
constructor.WriteString(FmtToken(&Token{
next: iter.next,
tag: STRING,
position: iter.position,
_inner: "[LIST]"}))
continue
} }
constructor.WriteString(FmtToken(iter)) constructor.WriteString(FmtToken(iter))

BIN
shsh

Binary file not shown.

View file

@ -26,9 +26,9 @@ func Lex(input string) *Token {
} }
var ret *Token var ret *Token
var tok strings.Builder
iter := &ret iter := &ret
delim := ' ' delim := ' '
var tok strings.Builder
is_list := false is_list := false
is_str := false is_str := false