diff --git a/bootstrap/cmd/root.go b/bootstrap/cmd/root.go index 3ff2b20..32a215b 100644 --- a/bootstrap/cmd/root.go +++ b/bootstrap/cmd/root.go @@ -44,7 +44,7 @@ for details take a look at the LICENSE file. `, Run: func(cmd *cobra.Command, args []string) { reader.ReadString("sameer mary") - ast, _ := parser.ParseToAST("(asd mary)") + ast, _ := parser.ParseToAST("(asd 'mary '(1 2 3) `(asd ~asd ~@zxc))") fmt.Printf("%s\n", ast.String()) }, } diff --git a/bootstrap/pkg/parser/parser.go b/bootstrap/pkg/parser/parser.go index f76c908..e163586 100644 --- a/bootstrap/pkg/parser/parser.go +++ b/bootstrap/pkg/parser/parser.go @@ -211,17 +211,23 @@ func readUnquotedExpr(parser IParsable) (types.IExpr, error) { } var sym types.IExpr - expr, err := readExpr(parser) + var err error + var expr types.IExpr + + if *c == "@" { + parser.next(true) + sym = types.MakeSymbol("unquote-splicing") + expr, err = readExpr(parser) + + } else { + sym = types.MakeSymbol("unquote") + expr, err = readExpr(parser) + } + if err != nil { return nil, err } - if *c == "@" { - sym = types.MakeSymbol("unquote-splicing") - - } else { - sym = types.MakeSymbol("unquote") - } return types.MakeList([]types.IExpr{sym, expr}), nil }