refactor: remove excessive atomics
This commit is contained in:
parent
a110225c49
commit
0db7a30af0
@ -88,38 +88,34 @@ object parser {
|
|||||||
private lazy val `<stmt>`: Parsley[NonEmptyList[Stmt]] =
|
private lazy val `<stmt>`: Parsley[NonEmptyList[Stmt]] =
|
||||||
sepBy1(`<basic-stmt>`, ";")
|
sepBy1(`<basic-stmt>`, ";")
|
||||||
private lazy val `<basic-stmt>` =
|
private lazy val `<basic-stmt>` =
|
||||||
(Skip from atomic("skip"))
|
(Skip from "skip")
|
||||||
| Read(atomic("read") ~> `<lvalue>`)
|
| Read("read" ~> `<lvalue>`)
|
||||||
| Free(atomic("free") ~> `<expr>`)
|
| Free("free" ~> `<expr>`)
|
||||||
| Return(atomic("return") ~> `<expr>`)
|
| Return("return" ~> `<expr>`)
|
||||||
| Exit(atomic("exit") ~> `<expr>`)
|
| Exit("exit" ~> `<expr>`)
|
||||||
| Print(atomic("print") ~> `<expr>`, pure(false))
|
| Print("print" ~> `<expr>`, pure(false))
|
||||||
| Print(atomic("println") ~> `<expr>`, pure(true))
|
| Print("println" ~> `<expr>`, pure(true))
|
||||||
| If(
|
| If(
|
||||||
atomic("if") ~> `<expr>` <~ "then",
|
"if" ~> `<expr>` <~ "then",
|
||||||
`<stmt>` <~ "else",
|
`<stmt>` <~ "else",
|
||||||
`<stmt>` <~ "fi"
|
`<stmt>` <~ "fi"
|
||||||
)
|
)
|
||||||
| While(atomic("while") ~> `<expr>` <~ "do", `<stmt>` <~ "done")
|
| While("while" ~> `<expr>` <~ "do", `<stmt>` <~ "done")
|
||||||
| Block(atomic("begin") ~> `<stmt>` <~ "end")
|
| Block("begin" ~> `<stmt>` <~ "end")
|
||||||
| VarDecl(atomic(`<type>`), `<ident>` <~ "=", `<rvalue>`)
|
| VarDecl(`<type>`, `<ident>` <~ "=", `<rvalue>`)
|
||||||
| Assign(`<ident>` <~ "=", `<rvalue>`)
|
| Assign(`<ident>` <~ "=", `<rvalue>`)
|
||||||
private lazy val `<lvalue>`: Parsley[LValue] =
|
private lazy val `<lvalue>`: Parsley[LValue] =
|
||||||
atomic(`<pair-elem>`) | atomic(`<ident-or-array-elem>`)
|
`<pair-elem>` | `<ident-or-array-elem>`
|
||||||
private lazy val `<rvalue>`: Parsley[RValue] =
|
private lazy val `<rvalue>`: Parsley[RValue] =
|
||||||
atomic(`<array-liter>`) |
|
`<array-liter>` |
|
||||||
atomic(
|
|
||||||
NewPair(
|
NewPair(
|
||||||
"newpair" ~> "(" ~> `<expr>` <~ ",",
|
"newpair" ~> "(" ~> `<expr>` <~ ",",
|
||||||
`<expr>` <~ ")"
|
`<expr>` <~ ")"
|
||||||
)
|
|
||||||
) |
|
) |
|
||||||
atomic(`<pair-elem>`) |
|
`<pair-elem>` |
|
||||||
atomic(
|
|
||||||
Call(
|
Call(
|
||||||
"call" ~> `<ident>` <~ "(",
|
"call" ~> `<ident>` <~ "(",
|
||||||
sepBy(`<expr>`, ",") <~ ")"
|
sepBy(`<expr>`, ",") <~ ")"
|
||||||
)
|
|
||||||
) | `<expr>`
|
) | `<expr>`
|
||||||
private lazy val `<pair-elem>` =
|
private lazy val `<pair-elem>` =
|
||||||
Fst("fst" ~> `<lvalue>`) | Snd("snd" ~> `<lvalue>`)
|
Fst("fst" ~> `<lvalue>`) | Snd("snd" ~> `<lvalue>`)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user