From 45d32cef6bed6600655e04f4f49af592aadf0c0f Mon Sep 17 00:00:00 2001 From: Aidan Date: Tue, 19 Nov 2019 19:15:20 -0800 Subject: [PATCH] fleshed out parser loop --- pkg/shsh/.parsers.go.swp | Bin 12288 -> 12288 bytes pkg/shsh/parsers.go | 20 +++++++++++++++++++- pkg/shsh/token.go | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pkg/shsh/.parsers.go.swp b/pkg/shsh/.parsers.go.swp index 38eb4f46a8c2ea95a0a347f79ea7b2bac144dd4f..71ddc8d421a32cb9dee0a9c343828b37bf57f026 100644 GIT binary patch delta 621 zcma*j&n^Q|6bA5HB_#eQL}KHF%~WErBBepFXhMgY*fFj#ZEw=dGwKMh% z_izVSa0bUvhCIx|0Q5o+G{XySdxj@?giAPu5*)!Hq+t~-NWl;c0+Li48e^@MixD?Q zIN5;d$LJ{8)`AtMML)-V*CUk^A!Ulbt3=>e8qLYlQLRuHPt~h!o+VBNE<=wzDFZoE zE86igyqH&U%=AJK~5*ATJ#`%EB7 oP&}a*n<9Z9RuiW0?W^Bemy&C?4ytbo_k?nD^)GQyoi=YHA7Xfs$N&HU delta 176 zcmZojXh@JsG6?hZRj|-AWB>vI1_st+7h=^}!x;YvPn6Q)$W2U7&B;m3o48P6V@@+O zW9a4&%nCe=s+$D`KJ)W_Vvq?C_GU$a$2>f>NMN#zPV(dxIu@I4^o}qB0AqeC(f|Me diff --git a/pkg/shsh/parsers.go b/pkg/shsh/parsers.go index 7ba839f..b2b7129 100644 --- a/pkg/shsh/parsers.go +++ b/pkg/shsh/parsers.go @@ -21,11 +21,29 @@ const ( ) func Parse(arg *Token) { + switch arg.tag { + case LIST_T: + for i := arg; i; i = i.next { + Parse(i) + } + if list_is_operation(arg) { + arg.tag = OPERATION_T + } + + case OPERAND_T: + if string_is_operator(arg._inner) { + arg.tag = OPERATOR_T + } + + default: + ;// TODO: Tag a parse error? + } } func string_delimiters_valid(arg string) bool { - + // TODO: Enhance this function + go } func list_is_operation(arg *Token) bool { diff --git a/pkg/shsh/token.go b/pkg/shsh/token.go index 3617794..79cd1e6 100644 --- a/pkg/shsh/token.go +++ b/pkg/shsh/token.go @@ -32,11 +32,13 @@ func Lex(input string) Token { if is_list { // TODO: Pass a pointer out of Lex and store a pointer *iter._inner = Lex(tok.String()) + *iter.tag = LIST_T is_list = false } else { // TODO: Store a pointer to the contents of the stringbuilder *iter._inner = tok.String() + *iter.tag = OPERAND_T } iter_alloced = true