From 66a3f49f71dff8091919967b8dc49468435fdb00 Mon Sep 17 00:00:00 2001 From: Rustan Leino Date: Thu, 5 Jan 2012 14:12:52 -0800 Subject: Dafny: firmed up the module system --- Source/Dafny/Scanner.cs | 207 ++++++++++++++++++++++++------------------------ 1 file changed, 104 insertions(+), 103 deletions(-) (limited to 'Source/Dafny/Scanner.cs') diff --git a/Source/Dafny/Scanner.cs b/Source/Dafny/Scanner.cs index e4d769d9..0f2dfe39 100644 --- a/Source/Dafny/Scanner.cs +++ b/Source/Dafny/Scanner.cs @@ -209,8 +209,8 @@ public class UTF8Buffer: Buffer { public class Scanner { const char EOL = '\n'; const int eofSym = 0; /* pdt */ - const int maxT = 102; - const int noSym = 102; + const int maxT = 103; + const int noSym = 103; [ContractInvariantMethod] @@ -487,57 +487,58 @@ void objectInvariant(){ void CheckLiteral() { switch (t.val) { case "module": t.kind = 8; break; - case "imports": t.kind = 9; break; - case "class": t.kind = 10; break; - case "ghost": t.kind = 11; break; - case "static": t.kind = 12; break; - case "unlimited": t.kind = 13; break; - case "datatype": t.kind = 14; break; - case "var": t.kind = 18; break; - case "type": t.kind = 20; break; - case "method": t.kind = 23; break; - case "constructor": t.kind = 24; break; - case "returns": t.kind = 25; break; - case "modifies": t.kind = 26; break; - case "free": t.kind = 27; break; - case "requires": t.kind = 28; break; - case "ensures": t.kind = 29; break; - case "decreases": t.kind = 30; break; - case "bool": t.kind = 33; break; - case "nat": t.kind = 34; break; - case "int": t.kind = 35; break; - case "set": t.kind = 36; break; - case "multiset": t.kind = 37; break; - case "seq": t.kind = 38; break; - case "object": t.kind = 39; break; - case "function": t.kind = 40; break; - case "reads": t.kind = 41; break; - case "label": t.kind = 44; break; - case "break": t.kind = 45; break; - case "return": t.kind = 46; break; - case "new": t.kind = 48; break; - case "choose": t.kind = 52; break; - case "if": t.kind = 53; break; - case "else": t.kind = 54; break; - case "case": t.kind = 55; break; - case "while": t.kind = 57; break; - case "invariant": t.kind = 58; break; - case "match": t.kind = 59; break; - case "assert": t.kind = 60; break; - case "assume": t.kind = 61; break; - case "print": t.kind = 62; break; - case "parallel": t.kind = 63; break; - case "in": t.kind = 77; break; - case "false": t.kind = 87; break; - case "true": t.kind = 88; break; - case "null": t.kind = 89; break; - case "this": t.kind = 90; break; - case "fresh": t.kind = 91; break; - case "allocated": t.kind = 92; break; - case "old": t.kind = 93; break; - case "then": t.kind = 94; break; - case "forall": t.kind = 96; break; - case "exists": t.kind = 98; break; + case "refines": t.kind = 9; break; + case "imports": t.kind = 10; break; + case "class": t.kind = 11; break; + case "ghost": t.kind = 12; break; + case "static": t.kind = 13; break; + case "unlimited": t.kind = 14; break; + case "datatype": t.kind = 15; break; + case "var": t.kind = 19; break; + case "type": t.kind = 21; break; + case "method": t.kind = 24; break; + case "constructor": t.kind = 25; break; + case "returns": t.kind = 26; break; + case "modifies": t.kind = 27; break; + case "free": t.kind = 28; break; + case "requires": t.kind = 29; break; + case "ensures": t.kind = 30; break; + case "decreases": t.kind = 31; break; + case "bool": t.kind = 34; break; + case "nat": t.kind = 35; break; + case "int": t.kind = 36; break; + case "set": t.kind = 37; break; + case "multiset": t.kind = 38; break; + case "seq": t.kind = 39; break; + case "object": t.kind = 40; break; + case "function": t.kind = 41; break; + case "reads": t.kind = 42; break; + case "label": t.kind = 45; break; + case "break": t.kind = 46; break; + case "return": t.kind = 47; break; + case "new": t.kind = 49; break; + case "choose": t.kind = 53; break; + case "if": t.kind = 54; break; + case "else": t.kind = 55; break; + case "case": t.kind = 56; break; + case "while": t.kind = 58; break; + case "invariant": t.kind = 59; break; + case "match": t.kind = 60; break; + case "assert": t.kind = 61; break; + case "assume": t.kind = 62; break; + case "print": t.kind = 63; break; + case "parallel": t.kind = 64; break; + case "in": t.kind = 78; break; + case "false": t.kind = 88; break; + case "true": t.kind = 89; break; + case "null": t.kind = 90; break; + case "this": t.kind = 91; break; + case "fresh": t.kind = 92; break; + case "allocated": t.kind = 93; break; + case "old": t.kind = 94; break; + case "then": t.kind = 95; break; + case "forall": t.kind = 97; break; + case "exists": t.kind = 99; break; default: break; } } @@ -640,118 +641,118 @@ void objectInvariant(){ else if (ch >= '0' && ch <= '9') {AddCh(); goto case 18;} else {t.kind = 3; break;} case 19: - {t.kind = 17; break;} + {t.kind = 18; break;} case 20: - {t.kind = 19; break;} + {t.kind = 20; break;} case 21: - {t.kind = 31; break;} - case 22: {t.kind = 32; break;} + case 22: + {t.kind = 33; break;} case 23: - {t.kind = 42; break;} - case 24: {t.kind = 43; break;} + case 24: + {t.kind = 44; break;} case 25: - {t.kind = 47; break;} + {t.kind = 48; break;} case 26: - {t.kind = 49; break;} - case 27: {t.kind = 50; break;} + case 27: + {t.kind = 51; break;} case 28: - {t.kind = 56; break;} + {t.kind = 57; break;} case 29: if (ch == '>') {AddCh(); goto case 30;} else {goto case 0;} case 30: - {t.kind = 64; break;} - case 31: {t.kind = 65; break;} - case 32: + case 31: {t.kind = 66; break;} - case 33: + case 32: {t.kind = 67; break;} + case 33: + {t.kind = 68; break;} case 34: if (ch == '&') {AddCh(); goto case 35;} else {goto case 0;} case 35: - {t.kind = 68; break;} - case 36: {t.kind = 69; break;} - case 37: + case 36: {t.kind = 70; break;} - case 38: + case 37: {t.kind = 71; break;} + case 38: + {t.kind = 72; break;} case 39: - {t.kind = 74; break;} - case 40: {t.kind = 75; break;} - case 41: + case 40: {t.kind = 76; break;} + case 41: + {t.kind = 77; break;} case 42: - {t.kind = 79; break;} - case 43: {t.kind = 80; break;} - case 44: + case 43: {t.kind = 81; break;} - case 45: + case 44: {t.kind = 82; break;} - case 46: + case 45: {t.kind = 83; break;} - case 47: + case 46: {t.kind = 84; break;} - case 48: + case 47: {t.kind = 85; break;} - case 49: + case 48: {t.kind = 86; break;} + case 49: + {t.kind = 87; break;} case 50: - {t.kind = 95; break;} + {t.kind = 96; break;} case 51: - {t.kind = 97; break;} + {t.kind = 98; break;} case 52: - {t.kind = 99; break;} - case 53: {t.kind = 100; break;} - case 54: + case 53: {t.kind = 101; break;} + case 54: + {t.kind = 102; break;} case 55: recEnd = pos; recKind = 5; if (ch == '=') {AddCh(); goto case 25;} else if (ch == ':') {AddCh(); goto case 53;} else {t.kind = 5; break;} case 56: - recEnd = pos; recKind = 15; + recEnd = pos; recKind = 16; if (ch == '>') {AddCh(); goto case 28;} else if (ch == '=') {AddCh(); goto case 62;} - else {t.kind = 15; break;} + else {t.kind = 16; break;} case 57: - recEnd = pos; recKind = 16; + recEnd = pos; recKind = 17; if (ch == '|') {AddCh(); goto case 37;} - else {t.kind = 16; break;} + else {t.kind = 17; break;} case 58: - recEnd = pos; recKind = 21; + recEnd = pos; recKind = 22; if (ch == '=') {AddCh(); goto case 63;} - else {t.kind = 21; break;} + else {t.kind = 22; break;} case 59: - recEnd = pos; recKind = 22; + recEnd = pos; recKind = 23; if (ch == '=') {AddCh(); goto case 39;} - else {t.kind = 22; break;} + else {t.kind = 23; break;} case 60: - recEnd = pos; recKind = 51; + recEnd = pos; recKind = 52; if (ch == '.') {AddCh(); goto case 50;} - else {t.kind = 51; break;} + else {t.kind = 52; break;} case 61: - recEnd = pos; recKind = 78; + recEnd = pos; recKind = 79; if (ch == '=') {AddCh(); goto case 40;} else if (ch == '!') {AddCh(); goto case 41;} - else {t.kind = 78; break;} + else {t.kind = 79; break;} case 62: - recEnd = pos; recKind = 72; + recEnd = pos; recKind = 73; if (ch == '>') {AddCh(); goto case 32;} - else {t.kind = 72; break;} + else {t.kind = 73; break;} case 63: - recEnd = pos; recKind = 73; + recEnd = pos; recKind = 74; if (ch == '=') {AddCh(); goto case 29;} - else {t.kind = 73; break;} + else {t.kind = 74; break;} } t.val = new String(tval, 0, tlen); -- cgit v1.2.3