Преглед на файлове

also allow capitals in lit assigns

Getty Ritter преди 2 години
родител
ревизия
2fc405fb6d
променени са 1 файла, в които са добавени 11 реда и са изтрити 2 реда
  1. 11 2
      src/grammar.lalrpop

+ 11 - 2
src/grammar.lalrpop

@@ -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(<>),
 };