From 900ab87f92266e01cec28881abc4fe7bc794f9b4 Mon Sep 17 00:00:00 2001 From: Aidan Date: Thu, 21 Nov 2019 19:58:28 -0800 Subject: [PATCH] basic parsing functions, to be improved later --- pkg/shsh/.parsers.go.swp | Bin 12288 -> 0 bytes pkg/shsh/parsers.go | 26 +++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) delete mode 100644 pkg/shsh/.parsers.go.swp diff --git a/pkg/shsh/.parsers.go.swp b/pkg/shsh/.parsers.go.swp deleted file mode 100644 index 71ddc8d421a32cb9dee0a9c343828b37bf57f026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2y>AmS7>5lKV&GGJh>@3eNsCDM7^sRWK$M{pBv1l~0Y%QmNvz)4r#oMvKq)K? zAP_qeD=;7?HvS0^3y3aA`~hqX4E&tCq%DHdg#q+hd3tU9+VAVfcT%IcdGONISsE)J z5@_3nIREPX)l=g0`VG5B}8eH5VRS^q=l{iRLc9jg!87m_JO+=zLvSA$Py_qH_pL&F17E-* zcmtk*8{i7K3@(8QPy&0v*DXSP0`I_E@De-#cflPHf)ijb*bR1pjo>qC{RBRO58ws3 z2Nu9QxCN%cc~ApYFbsx3Z=L_(K5@xxfDNz#Hoykh02^QfY~XJjnDTAw5RjaN{_DjJ&NiU1fw6gefezhe%GU#sGgfxv$_+=dO$Su>1Rx@X%}<{9&YA)lF#gKhW_@Vh&)g3saJchyOI0T*2&(COCo8N0B;KEdmHxi z40(O%{Z&9=&2gz)kRH!1%l#0q|U)xYVE*%m& zig5-XD-f{^W@JZ^KPoS9Ctv8=ENsy=MO`_o$Qng{M`ak2%@PW1OC9%d`6Go#$;^;! O+RVX2K9iA=O2rSMDQbNH diff --git a/pkg/shsh/parsers.go b/pkg/shsh/parsers.go index b2b7129..a4a4d4a 100644 --- a/pkg/shsh/parsers.go +++ b/pkg/shsh/parsers.go @@ -4,6 +4,7 @@ package shsh import ( "strings" + "unicode" ) /* @@ -42,14 +43,33 @@ func Parse(arg *Token) { } func string_delimiters_valid(arg string) bool { - // TODO: Enhance this function - go + delim := arg[0] + iter := 0 + + if delim != arg[len(arg) - 1] { + return false + } + + for _, r := range arg { + if delim == r { + iter += 1 + } + } + + return iter == 2 } func list_is_operation(arg *Token) bool { - + return ((*Token) arg._inner).tag == OPERATOR_T } +// theres probly a way better way to do it. func string_is_operator(arg string) bool { + for _, r := range arg { + if !unicode.IsLetter(r) && r != '_' { + return false + } + } + return true }