//testcase {
// input "x";
-// output "a1:{x}";
+// output "a:{x}";
//
// s = a1:: a
// a = s1:: s
output "1:{{a b} {c}}";
s = ids
- ids = "1":: id (" " ids &~ id !((~[])*))
- | "2":: id ( ids &~ id !((~[])*))
+ ids = "1":: id (" " ids &~ id ((~[])*)!)
+ | "2":: id ( ids &~ id ((~[])*)!)
| id
id = [a-z]++
}
sp = " "
any = (~[])*
-s = smt:: !ws statement !ws statement !ws
+s = smt:: ws! statement ws! statement ws!
-block = !"\n" !indent blockBody
- &~ !"\n" (" " !outdent " ") !(~[\ ]) !((~[])*)
+block = "\n"! indent! blockBody
+ &~ "\n"! (" " outdent! " ") (~[\ ])! ((~[])*)!
blockBody = statement
> sbb:: statement ws blockBody
s = s2:: q " "*
q = a3:: [a-z] [a-z] [a-z]
- &~ !(~[]) "b" !((~[])*)
+ &~ (~[])! "b" ((~[])*)!
}
testcase {
Expr = if:: "if" "(" Expr ")" IfBody /ws
| ident:: [a-z]++
IfBody = else:: Expr "else" Expr /ws
- | then:: Expr &~ ((~[])* "else" !Expr /ws)
+ | then:: Expr &~ ((~[])* "else" Expr! /ws)
ws = [ ]**
}
x = [123]
}
+
+//testcase {
+// input "ab";
+//
+// s = a:"a" b:"b"
+//}
+
+
testcase {
- input "if (bar!) baz!;";
- output "IfThen:{id:{x:{b x:{a r}}} id:{x:{b x:{a z}}}}";
-
- s = Expr ";"
- Expr = IfThen
- | IfThenElse
- | id:: id "!"
- id = [a-z] | x:: [a-z] id
- IfThen = IfThen::
- "if" "(" Expr ")"
- Expr
- /ws
- IfThenElse = IfThenElse::
- "if" "(" Expr ")"
- NotIfThenExpr
- "else"
- Expr
- /ws
- NotIfThenExpr = (Expr & [a-z]+)
- SpaceIfThen = (~[])*// !IfThen
- ws = [\n ]**
-}
\ No newline at end of file
+ input "a c";
+ s = first:: A WSA B? WSB C
+ A = "a"
+ B = "b"
+ C = "c"
+ WSA = WSA:: " "**
+ WSB = () -> ~" "
+ | WSB:: " "++
+}