Home | History | Annotate | Download | only in tombc
      1 program       := program statement | statement | empty
      2 statement     := { statement }                                                                              | 
      3                  identifier = numexpression;                                                                | 
      4                  identifier[numexpression] = numexpression;                                                 |
      5                  function(expressionlist);                                                                  | 
      6                  for (identifer = numexpression; numexpression; identifier = numexpression) { statement }   |
      7                  while (numexpression) { statement }                                                        | 
      8                  if (numexpresion) { statement } elif                                                       | 
      9                  break;                                                                                     | 
     10                  continue;                                                                                  
     11                  
     12 elif          := else statement | empty
     13 function      := abs | countbits | exptmod | jacobi | print | isprime | nextprime | issquare | readinteger | exit
     14 expressionlist := expressionlist, expression | expression
     15 
     16 // LR(1) !!!?
     17 expression    := string | numexpression
     18 numexpression := cmpexpr && cmpexpr | cmpexpr \|\| cmpexpr | cmpexpr
     19 cmpexpr       := boolexpr  < boolexpr | boolexpr  > boolexpr | boolexpr == boolexpr | 
     20                  boolexpr <= boolexpr | boolexpr >= boolexpr | boolexpr
     21 boolexpr      := shiftexpr & shiftexpr | shiftexpr ^ shiftexpr | shiftexpr \| shiftexpr | shiftexpr
     22 shiftexpr     := addsubexpr << addsubexpr | addsubexpr >> addsubexpr | addsubexpr
     23 addsubexpr    := mulexpr + mulexpr | mulexpr - mulexpr | mulexpr
     24 mulexpr       := expr * expr       | expr / expr | expr % expr | expr
     25 expr          := -nexpr | nexpr 
     26 nexpr         := integer | identifier | ( numexpression ) | identifier[numexpression] 
     27 
     28 identifier    := identifer digits | identifier alpha | alpha
     29 alpha         := a ... z | A ... Z
     30 integer       := hexnumber | digits 
     31 hexnumber     := 0xhexdigits
     32 hexdigits     := hexdigits hexdigit | hexdigit
     33 hexdigit      := 0 ... 9 | a ... f | A ... F
     34 digits        := digits digit | digit 
     35 digit         := 0 ... 9
     36