Forráskód Böngészése

tune up diagnostic

Vladislav Folts 11 éve
szülő
commit
cd89cf3010
2 módosított fájl, 12 hozzáadás és 1 törlés
  1. 10 0
      src/context.js
  2. 2 1
      src/grammar.js

+ 10 - 0
src/context.js

@@ -1375,6 +1375,16 @@ exports.For = ChainedContext.extend({
 
 exports.emitForBegin = function(context){context.handleBegin();};
 
+exports.CheckAssignment = ChainedContext.extend({
+    init: function Context$CheckAssignment(context){
+        ChainedContext.prototype.init.call(this, context);
+    },
+    handleLiteral: function(s){
+        if (s == "=")
+            throw new Errors.Error("did you mean ':=' (statement expected, got expression)?");
+    }
+});
+
 exports.Assignment = ChainedContext.extend({
     init: function AssignmentContext(context){
         ChainedContext.prototype.init.call(this, context);

+ 2 - 1
src/grammar.js

@@ -87,7 +87,8 @@ var actualParameters = and("(", context(optional(expList), Context.ActualParamet
 var procedureCall = context(and(designator, optional(actualParameters))
                           , Context.StatementProcedureCall);
 
-var assignment = context(and(designator, ":=", required(expression, "expression expected"))
+var assignment = context(and(designator, context(or(":=", "="), Context.CheckAssignment)
+                       , required(expression, "expression expected"))
                        , Context.Assignment);
 
 var statement = optional(or(