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