Browse Source

+ Added parsing of explicitly assigned enumerated values

michael 20 years ago
parent
commit
a379fe04be
2 changed files with 31 additions and 6 deletions
  1. 5 1
      fcl/passrc/pastree.pp
  2. 26 5
      fcl/passrc/pparser.pp

+ 5 - 1
fcl/passrc/pastree.pp

@@ -184,6 +184,7 @@ type
     function ElementTypeName: String; override;
     IsValueUsed: Boolean;
     Value: Integer;
+    AssignedValue : String;
   end;
 
   TPasEnumType = class(TPasType)
@@ -1402,7 +1403,10 @@ end.
 
 {
   $Log$
-  Revision 1.7  2005-02-14 17:13:16  peter
+  Revision 1.8  2005-05-10 06:08:59  michael
+  + Added parsing of explicitly assigned enumerated values
+
+  Revision 1.7  2005/02/14 17:13:16  peter
     * truncate log
 
 }

+ 26 - 5
fcl/passrc/pparser.pp

@@ -389,8 +389,17 @@ begin
           NextToken;
           if CurToken = tkBraceClose then
             break
-          else if CurToken <> tkComma then
-            ParseExc(SParserExpectedCommaRBracket);
+          else if CurToken in [tkEqual,tkAssign] then
+            begin
+            EnumValue.AssignedValue:=ParseExpression;
+            NextToken;
+            if CurToken = tkBraceClose then
+              Break
+            else if not (CurToken=tkComma) then
+              ParseExc(SParserExpectedCommaRBracket);
+            end
+          else if not (CurToken=tkComma) then
+            ParseExc(SParserExpectedCommaRBracket)
         end;
       end;
     tkSet:
@@ -1004,8 +1013,17 @@ begin
             NextToken;
             if CurToken = tkBraceClose then
               break
-            else if CurToken <> tkComma then
-              ParseExc(SParserExpectedCommaRBracket);
+            else if CurToken in [tkEqual,tkAssign] then
+              begin
+              EnumValue.AssignedValue:=ParseExpression;
+              NextToken;
+              if CurToken = tkBraceClose then
+                Break
+              else if not (CurToken=tkComma) then
+                ParseExc(SParserExpectedCommaRBracket);
+              end
+            else if not (CurToken=tkComma) then
+              ParseExc(SParserExpectedCommaRBracket)
           end;
           ExpectToken(tkSemicolon);
         except
@@ -1857,7 +1875,10 @@ end.
 
 {
   $Log$
-  Revision 1.16  2005-04-07 07:55:40  marco
+  Revision 1.17  2005-05-10 06:08:59  michael
+  + Added parsing of explicitly assigned enumerated values
+
+  Revision 1.16  2005/04/07 07:55:40  marco
    * patch from peter for resoursestring=string bug + fix crash missing --input
 
   Revision 1.15  2005/02/17 18:33:31  peter