diff --git a/in/simple.asl b/in/simple.asl index 268016e..aff052d 100644 --- a/in/simple.asl +++ b/in/simple.asl @@ -1,4 +1,3 @@ -switch x { - case 1: - x = 1; +func myFunc(a, b) { + // ... } diff --git a/src/asl/parser.go b/src/asl/parser.go index e17bbf6..ae03fd9 100644 --- a/src/asl/parser.go +++ b/src/asl/parser.go @@ -1,7 +1,7 @@ package asl import ( - "strconv" + ) const TAB = " " @@ -217,19 +217,21 @@ func parseFunctionParameter() { if accept("{") { return } - - i := int64(0) + + appendOut("params [", false) for !accept(")") { name := get().token next() - appendOut(name+" = _this select "+strconv.FormatInt(i, 10)+";", true) - i++ + appendOut("\""+name+"\"", false) if !accept(")") { expect(",") + appendOut(",", false) } } + + appendOut("];", true) } func parseReturn() { diff --git a/src/asl/parser_test.go b/src/asl/parser_test.go index f84a9dc..84913f3 100644 --- a/src/asl/parser_test.go +++ b/src/asl/parser_test.go @@ -57,7 +57,7 @@ func TestParserSwitch(t *testing.T) { func TestParserFunction(t *testing.T) { got := getCompiled(t, "test/tokenizer_func.asl") - want := "TestFunction = {\r\nparam0 = _this select 0;\r\nparam1 = _this select 1;\r\nreturn true;\r\n};\r\n" + want := "TestFunction = {\r\nparams [\"param0\",\"param1\"];\r\nreturn true;\r\n};\r\n" equal(t, got, want) } @@ -85,7 +85,7 @@ func TestParserExpression2(t *testing.T) { func TestParserFunctionCall(t *testing.T) { got := getCompiled(t, "test/parser_func_call.asl") - want := "myFunc = {\r\na = _this select 0;\r\nb = _this select 1;\r\nreturn a>b;\r\n};\r\n[1+3/4, 2-(66*22)/3-((123))] call myFunc;\r\n" + want := "myFunc = {\r\nparams [\"a\",\"b\"];\r\nreturn a>b;\r\n};\r\n[1+3/4, 2-(66*22)/3-((123))] call myFunc;\r\n" equal(t, got, want) }