Calc = [ Declarations ] StatSeq . Declarations = "VAR" Ident { "," Ident } ";" . StatSeq = Stat ";" { Stat ";" } . Stat = ( "WRITE" | "->" ) [ ( String | "MORSE" "(" String ")" | "ESROM" "(" String ")" | "WLAT" "(" Expr ")" | "WLON" "(" Expr ")" | "WGPS" "(" Expr "," Expr ")" | "WGK" "(" Expr "," Expr ")" | "WUTM" "(" Expr "," Expr "," Expr "," Expr ")" | "CHAR" "(" Expr ")" | "ROT13" "(" String [ ":" number ] ")" | Expr [ ":" number ] ) { "," ( String | "WLAT" "(" Expr ")" | "WLON" "(" Expr ")" | "WGPS" "(" Expr "," Expr ")" | "WGK" "(" Expr "," Expr ")" | "WUTM" "(" Expr "," Expr "," Expr "," Expr ")" | "CHAR" "(" Expr ")" | "ROT13" "(" String [ ":" number ] ")" | Expr [ ":" number ] ) } ] | "OLon" "=" Expr | "OLat" "=" Expr | "DEBUG" "=" Expr | "MARGIN" "=" Expr | Ident "=" Expr | "LIN3" "(" Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Ident "," Ident "," Ident ")" | "GPS2UTM" "(" Expr "," Expr "," Ident "," Ident "," Ident "," Ident ")" | "UTM2GPS" "(" Expr "," Expr "," Expr "," Expr "," Ident "," Ident ")" | "cp" "(" Expr "," Expr "," Expr "," Expr "," Ident "," Ident ")" | "cbp" "(" Expr "," Expr "," Expr "," Expr "," Ident "," Ident ")" | "GPS2GK" "(" Expr "," Expr "," Expr "," Ident "," Ident ")" | "GK2GPS" "(" Expr "," Expr "," Ident "," Ident ")" | "Center" "(" Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Ident "," Ident ")" | "KreuzPeilung" "(" Expr "," Expr "," Expr "," Expr "," Expr "," Expr "," Ident "," Ident ")" . Expr = Term { "+" Term | "-" Term } . Term = Hoch { "*" Hoch | "/" Hoch } . Hoch = Fact { "^" Fact | "|" Fact } . Fact = Ident | number | Func | "(" Expr ")" | "PI" | Koord . Koord = ( ( "E" | "N" ) | ( "W" | "S" ) ) number number . Func = "cos" "(" Expr ")" | "acos" "(" Expr ")" | "sin" "(" Expr ")" | "asin" "(" Expr ")" | "tan" "(" Expr ")" | "tanh" "(" Expr ")" | "atan" "(" Expr ")" | "atan2" "(" Expr "," Expr ")" | "ceil" "(" Expr ")" | "exp" "(" Expr ")" | "fabs" "(" Expr ")" | "floor" "(" Expr ")" | "fmod" "(" Expr "," Expr ")" | "pow" "(" Expr "," Expr ")" | "sqrt" "(" Expr ")" | "GMMMM" "(" Expr "," Expr "," Expr "," Expr "," Expr ")" | "BearingUTM" "(" Expr "," Expr "," Expr "," Expr ")" | "DistUTM" "(" Expr "," Expr "," Expr "," Expr ")" | "DistVincenty" "(" Expr "," Expr "," Expr "," Expr ")" | "ProjUTMLat" "(" Expr "," Expr "," Expr "," Expr ")" | "ProjUTMLon" "(" Expr "," Expr "," Expr "," Expr ")" | "MKZ" "(" Expr ")" | "qsum" "(" Expr ")" | "qqsum" "(" Expr ")" | "kqsum" "(" Expr ")" | "ToRad" "(" Expr ")" | "ToDeg" "(" Expr ")" | "ord" "(" String ")" | "alpha" "(" String ")" . Ident = ident . String = string .