|
@@ -49,11 +49,20 @@ pub Stmts: Vec<Stmt> = {
|
|
|
pub Stmt: Stmt = {
|
|
|
"puts" <Expr> => Stmt::Puts(<>),
|
|
|
<fixed:"fix"?> <name:Name> ":=" <expr:Expr> => Stmt::Assn(fixed.is_some(), name, expr),
|
|
|
- <fixed:"fix"?> <name:Name> "::=" <strs:(<"var">)*> =>
|
|
|
- Stmt::LitAssn(fixed.is_some(), name, strs.iter().map(|x| x.to_string()).collect()),
|
|
|
+ <fixed:"fix"?> <name:Name> "::=" <strs:(<AtomLit>)*> =>
|
|
|
+ Stmt::LitAssn(
|
|
|
+ fixed.is_some(),
|
|
|
+ name,
|
|
|
+ strs,
|
|
|
+ ),
|
|
|
"fix" <Name> => Stmt::Fix(<>),
|
|
|
};
|
|
|
|
|
|
+pub AtomLit: String = {
|
|
|
+ "var" => <>.to_string(),
|
|
|
+ "atom" => <>.to_string(),
|
|
|
+};
|
|
|
+
|
|
|
pub Name: Name = {
|
|
|
"var" => ast.add_string(<>),
|
|
|
};
|