tools/pas2c/PascalUnitSyntaxTree.hs
changeset 13887 5988e73080a3
parent 10747 07ade56c3b4a
equal deleted inserted replaced
13886:b6c35ac1c5ba 13887:5988e73080a3
     3 data PascalUnit =
     3 data PascalUnit =
     4     Program Identifier Implementation Phrase
     4     Program Identifier Implementation Phrase
     5     | Unit Identifier Interface Implementation (Maybe Initialize) (Maybe Finalize)
     5     | Unit Identifier Interface Implementation (Maybe Initialize) (Maybe Finalize)
     6     | System [TypeVarDeclaration]
     6     | System [TypeVarDeclaration]
     7     | Redo [TypeVarDeclaration]
     7     | Redo [TypeVarDeclaration]
     8     deriving (Show, Eq)
     8     deriving (Show, Read, Eq)
     9 data Interface = Interface Uses TypesAndVars
     9 data Interface = Interface Uses TypesAndVars
    10     deriving (Show, Eq)
    10     deriving (Show, Read, Eq)
    11 data Implementation = Implementation Uses TypesAndVars
    11 data Implementation = Implementation Uses TypesAndVars
    12     deriving (Show, Eq)
    12     deriving (Show, Read, Eq)
    13 data Identifier = Identifier String BaseType
    13 data Identifier = Identifier String BaseType
    14     deriving (Show, Eq)
    14     deriving (Show, Read, Eq)
    15 data TypesAndVars = TypesAndVars [TypeVarDeclaration]
    15 data TypesAndVars = TypesAndVars [TypeVarDeclaration]
    16     deriving (Show, Eq)
    16     deriving (Show, Read, Eq)
    17 data TypeVarDeclaration = TypeDeclaration Identifier TypeDecl
    17 data TypeVarDeclaration = TypeDeclaration Identifier TypeDecl
    18     | VarDeclaration Bool Bool ([Identifier], TypeDecl) (Maybe InitExpression)
    18     | VarDeclaration Bool Bool ([Identifier], TypeDecl) (Maybe InitExpression)
    19     | FunctionDeclaration Identifier Bool Bool Bool TypeDecl [TypeVarDeclaration] (Maybe (TypesAndVars, Phrase))
    19     | FunctionDeclaration Identifier Bool Bool Bool TypeDecl [TypeVarDeclaration] (Maybe (TypesAndVars, Phrase))
    20     | OperatorDeclaration String Identifier Bool TypeDecl [TypeVarDeclaration] (Maybe (TypesAndVars, Phrase))
    20     | OperatorDeclaration String Identifier Bool TypeDecl [TypeVarDeclaration] (Maybe (TypesAndVars, Phrase))
    21     deriving (Show, Eq)
    21     deriving (Show, Read, Eq)
    22 data TypeDecl = SimpleType Identifier
    22 data TypeDecl = SimpleType Identifier
    23     | RangeType Range
    23     | RangeType Range
    24     | Sequence [Identifier]
    24     | Sequence [Identifier]
    25     | ArrayDecl (Maybe Range) TypeDecl
    25     | ArrayDecl (Maybe Range) TypeDecl
    26     | RecordType [TypeVarDeclaration] (Maybe [[TypeVarDeclaration]])
    26     | RecordType [TypeVarDeclaration] (Maybe [[TypeVarDeclaration]])
    30     | Set TypeDecl
    30     | Set TypeDecl
    31     | FunctionType TypeDecl [TypeVarDeclaration]
    31     | FunctionType TypeDecl [TypeVarDeclaration]
    32     | DeriveType InitExpression
    32     | DeriveType InitExpression
    33     | VoidType
    33     | VoidType
    34     | VarParamType TypeDecl -- this is a hack
    34     | VarParamType TypeDecl -- this is a hack
    35     deriving (Show, Eq)
    35     deriving (Show, Read, Eq)
    36 data Range = Range Identifier
    36 data Range = Range Identifier
    37            | RangeFromTo InitExpression InitExpression
    37            | RangeFromTo InitExpression InitExpression
    38            | RangeInfinite
    38            | RangeInfinite
    39     deriving (Show, Eq)
    39     deriving (Show, Read, Eq)
    40 data Initialize = Initialize String
    40 data Initialize = Initialize String
    41     deriving (Show, Eq)
    41     deriving (Show, Read, Eq)
    42 data Finalize = Finalize String
    42 data Finalize = Finalize String
    43     deriving (Show, Eq)
    43     deriving (Show, Read, Eq)
    44 data Uses = Uses [Identifier]
    44 data Uses = Uses [Identifier]
    45     deriving (Show, Eq)
    45     deriving (Show, Read, Eq)
    46 data Phrase = ProcCall Reference [Expression]
    46 data Phrase = ProcCall Reference [Expression]
    47         | IfThenElse Expression Phrase (Maybe Phrase)
    47         | IfThenElse Expression Phrase (Maybe Phrase)
    48         | WhileCycle Expression Phrase
    48         | WhileCycle Expression Phrase
    49         | RepeatCycle Expression [Phrase]
    49         | RepeatCycle Expression [Phrase]
    50         | ForCycle Identifier Expression Expression Phrase Bool -- The last Boolean indicates wether it's up or down counting
    50         | ForCycle Identifier Expression Expression Phrase Bool -- The last Boolean indicates wether it's up or down counting
    52         | Phrases [Phrase]
    52         | Phrases [Phrase]
    53         | SwitchCase Expression [([InitExpression], Phrase)] (Maybe [Phrase])
    53         | SwitchCase Expression [([InitExpression], Phrase)] (Maybe [Phrase])
    54         | Assignment Reference Expression
    54         | Assignment Reference Expression
    55         | BuiltInFunctionCall [Expression] Reference
    55         | BuiltInFunctionCall [Expression] Reference
    56         | NOP
    56         | NOP
    57     deriving (Show, Eq)
    57     deriving (Show, Read, Eq)
    58 data Expression = Expression String
    58 data Expression = Expression String
    59     | BuiltInFunCall [Expression] Reference
    59     | BuiltInFunCall [Expression] Reference
    60     | PrefixOp String Expression
    60     | PrefixOp String Expression
    61     | PostfixOp String Expression
    61     | PostfixOp String Expression
    62     | BinOp String Expression Expression
    62     | BinOp String Expression Expression
    68     | FloatLiteral String
    68     | FloatLiteral String
    69     | HexNumber String
    69     | HexNumber String
    70     | Reference Reference
    70     | Reference Reference
    71     | SetExpression [Identifier]
    71     | SetExpression [Identifier]
    72     | Null
    72     | Null
    73     deriving (Show, Eq)
    73     deriving (Show, Read, Eq)
    74 data Reference = ArrayElement [Expression] Reference
    74 data Reference = ArrayElement [Expression] Reference
    75     | FunCall [Expression] Reference
    75     | FunCall [Expression] Reference
    76     | TypeCast Identifier Expression
    76     | TypeCast Identifier Expression
    77     | SimpleReference Identifier
    77     | SimpleReference Identifier
    78     | Dereference Reference
    78     | Dereference Reference
    79     | RecordField Reference Reference
    79     | RecordField Reference Reference
    80     | Address Reference
    80     | Address Reference
    81     | RefExpression Expression
    81     | RefExpression Expression
    82     deriving (Show, Eq)
    82     deriving (Show, Read, Eq)
    83 data InitExpression = InitBinOp String InitExpression InitExpression
    83 data InitExpression = InitBinOp String InitExpression InitExpression
    84     | InitPrefixOp String InitExpression
    84     | InitPrefixOp String InitExpression
    85     | InitReference Identifier
    85     | InitReference Identifier
    86     | InitArray [InitExpression]
    86     | InitArray [InitExpression]
    87     | InitRecord [(Identifier, InitExpression)]
    87     | InitRecord [(Identifier, InitExpression)]
    95     | InitSet [InitExpression]
    95     | InitSet [InitExpression]
    96     | InitAddress InitExpression
    96     | InitAddress InitExpression
    97     | InitNull
    97     | InitNull
    98     | InitRange Range
    98     | InitRange Range
    99     | InitTypeCast Identifier InitExpression
    99     | InitTypeCast Identifier InitExpression
   100     deriving (Show, Eq)
   100     deriving (Show, Read, Eq)
   101 
   101 
   102 data BaseType = BTUnknown
   102 data BaseType = BTUnknown
   103     | BTChar
   103     | BTChar
   104     | BTString
   104     | BTString
   105     | BTAString
   105     | BTAString
   114     | BTSet BaseType
   114     | BTSet BaseType
   115     | BTEnum [String]
   115     | BTEnum [String]
   116     | BTVoid
   116     | BTVoid
   117     | BTUnit
   117     | BTUnit
   118     | BTVarParam BaseType
   118     | BTVarParam BaseType
   119     deriving (Show, Eq)
   119     deriving (Show, Read, Eq)