Next: Functions Up: SISCAD-P Macro Language Previous: Structure

# Syntax

Syntax SISCAD-P - Input Language

    Command                : Command | Block | IF-Command |
                                WHILE-Command

    Command                : { Action }
                             { Object }
                             { Characterization }
                             { Parameter
                                { ParameterEnd Parameter }+ }
                             CommandEnd

    Block                  : '{'
                             { Command }
                             '}'

    IF -  command          : IF '(' ArithmeticExpression ')'
                             Block
                             CommandEnd | ELSE-Command

    ELSE - command         : ELSE
                             block

    WHILE - command        : WHILE '(' ArithmeticExpression ')'
                             block

    Parameter              : { KeyWord '=' }
                             { ParameterSetting }

    ParameterSetting       : {} |
                             Entity { PickInfo } |
                             Coordinates { PointOfIntersectionInfo }|
                             Integer |
                             Letters |
                             Text |
                             ArithmeticExpression

    Entity                 : EntityName |
                             {Typecast} RecordNumber |
                             FunctionVariable

    PickInfo               : '(' Entity { ',' Entity } ')'

    PointOfIntersetionInfo : '(' { CoordinatesPair ';' }
                                 WindowNumber ')'

    Typecast               : '[' PartNumber ']' |
                             '[' Operand ']' |
                             '[' PartNumber '|' Object ']' |
                             '[' PartNumber ']' '[' Object ']'

    PartNumber                : RecordNumber

    FunctionVariable       : '@'Integer

    Coordinates           : FunctionVariable |
                             CoordinatesPair |
                             Function |
                             Entity

    CoordinatesPair        : ArithmeticExpression
                                ',' ArithmeticExpression

    Function               : FunctionEntity
                                { '(' FunctionParameter
                                  { ParameterEnd
                                    FunctionParameter }+ ')' }

    FunctionEntity         : EntityName |
                             {Typecast} RecordNumber

    FunctionParameter      : ArithmeticExpression |
                             Entity |
                             Coordinates |
                             Text

    EntityName             : Name
                             TextInQuotationMarks
                             Function

    Text                   : TextInQuotationMarks |
                             FunctionVariable |
                             Function |
                             Entity

    ArithmeticExpression   : {[+-]} Term { [+-] Term }+

    Term                   : Factor { [*/] Term }

    Factor                 : Function |
                             Entity |
                             '(' ArithmeticExpression ')' |
                             Number |
                             FunctionVariable

    Action                 : MODIFY , ACTIVATE , CREATE ...

    Object                 : POINT , LINE , CIRCLE ...

    Characterization       : CAR , PP , DX ...

    KeyWord               : P , FA , LA , P1 ...

    Name                   : [_a-zA-Z]{_a-zA-Z0-9}+

    RecordNumber          : 1 .. max

    Integer                : min ... max

    TextInQuotationMarks   : '"' {...}+ '"'

    Letters                : [a_zA_Z]

    Number                 : real number
                                ( min  max)

    End of command         : '!'

    End of parameter       : ';'

    WindowNumber              : 0 .. 9