Changeset 21888 in project


Ignore:
Timestamp:
12/10/10 15:24:41 (9 years ago)
Author:
Alan Post
Message:

genturfa'i: add , and ' operators to grammar.

This is a major cleanup of the interface between the parser and
code, allowing a mixture of #!key and positional arguments, letting
the user specify which productions in the grammar modify the parse
tree and which don't.

By default, literal strings and characters no longer add elements to
the parse tree. As well, the predicate operations no longer modify
the parse tree either.

The , operator can be used in front of a string or character so that
it is included in the parse tree. Conversely, the ' operator can be
used to mark a rule so it does not modify the parse tree.

These together allow a much cleaner and more flexible interface
between the grammar and the code that operates on the parse tree.

Location:
release/4/genturfahi/trunk
Files:
33 edited

Legend:

Unmodified
Added
Removed
  • release/4/genturfahi/trunk/bootstrap.scm

    r21887 r21888  
    2020(define genturfahi-peg-gerna
    2121  (let ()
    22     (define (cfari-5 porsi mapti namapti) (cfari-6 porsi mapti namapti))
     22    (define (cfari-38 porsi mapti namapti) (cfari-39 porsi mapti namapti))
    2323    (define (cfari-samselpla-2 porsi mapti namapti)
    24       (cfari-samselpla-7 porsi mapti namapti))
    25     (define (gerna-3 porsi mapti namapti) (gerna-9 porsi mapti namapti))
    26     (define (smuni-8 porsi mapti namapti) (smuni-12 porsi mapti namapti))
    27     (define (naselci-10 porsi mapti namapti) (naselci-13 porsi mapti namapti))
    28     (define (javni-11 porsi mapti namapti) (javni-16 porsi mapti namapti))
    29     (define (jonai-14 porsi mapti namapti) (jonai-17 porsi mapti namapti))
    30     (define (je-15 porsi mapti namapti) (je-21 porsi mapti namapti))
    31     (define (pajavni-18 porsi mapti namapti) (pajavni-29 porsi mapti namapti))
    32     (define (optional-22 porsi mapti namapti)
    33       (optional-30 porsi mapti namapti))
    34     (define (repetition0-23 porsi mapti namapti)
    35       (repetition0-31 porsi mapti namapti))
    36     (define (repetition1-24 porsi mapti namapti)
    37       (repetition1-32 porsi mapti namapti))
    38     (define (and-predicate-25 porsi mapti namapti)
    39       (and-predicate-33 porsi mapti namapti))
    40     (define (end-of-input-26 porsi mapti namapti)
    41       (end-of-input-34 porsi mapti namapti))
    42     (define (not-predicate-27 porsi mapti namapti)
    43       (not-predicate-35 porsi mapti namapti))
    44     (define (cmene-sumti-19 porsi mapti namapti)
    45       (cmene-sumti-36 porsi mapti namapti))
    46     (define (selci-javni-28 porsi mapti namapti)
    47       (selci-javni-43 porsi mapti namapti))
    48     (define (selci-naselci-37 porsi mapti namapti)
    49       (selci-naselci-44 porsi mapti namapti))
    50     (define (lerfu-selci-38 porsi mapti namapti)
    51       (lerfu-selci-46 porsi mapti namapti))
    52     (define (lerfu-cmene-45 porsi mapti namapti)
    53       (lerfu-cmene-47 porsi mapti namapti))
    54     (define (valsi-selci-39 porsi mapti namapti)
    55       (valsi-selci-49 porsi mapti namapti))
    56     (define (valsi-lerfu-48 porsi mapti namapti)
    57       (valsi-lerfu-50 porsi mapti namapti))
    58     (define (klesi-selci-40 porsi mapti namapti)
    59       (klesi-selci-52 porsi mapti namapti))
    60     (define (klesi-lerfu-51 porsi mapti namapti)
    61       (klesi-lerfu-54 porsi mapti namapti))
    62     (define (klesi-cmene-53 porsi mapti namapti)
    63       (klesi-cmene-55 porsi mapti namapti))
    64     (define (denpabu-41 porsi mapti namapti) (denpabu-56 porsi mapti namapti))
    65     (define (samselpla-20 porsi mapti namapti)
    66       (samselpla-59 porsi mapti namapti))
    67     (define (samselpla-xadni-57 porsi mapti namapti)
    68       (samselpla-xadni-60 porsi mapti namapti))
    69     (define (samselpla-cmene-58 porsi mapti namapti)
    70       (samselpla-cmene-61 porsi mapti namapti))
    71     (define (girzu-javni-42 porsi mapti namapti)
    72       (girzu-javni-62 porsi mapti namapti))
    73     (define (canlu-1 porsi mapti namapti) (canlu-65 porsi mapti namapti))
    74     (define (canlubu-63 porsi mapti namapti) (canlubu-68 porsi mapti namapti))
    75     (define (totoi-64 porsi mapti namapti) (totoi-70 porsi mapti namapti))
    76     (define (CR-66 porsi mapti namapti) (CR-71 porsi mapti namapti))
    77     (define (LF-67 porsi mapti namapti) (LF-72 porsi mapti namapti))
    78     (define (CRLF-69 porsi mapti namapti) (CRLF-73 porsi mapti namapti))
    79     (define (FAhO-4 porsi mapti namapti) (FAhO-74 porsi mapti namapti))
    80     (define cfari-6
     24      (cfari-samselpla-40 porsi mapti namapti))
     25    (define (gerna-3 porsi mapti namapti) (gerna-41 porsi mapti namapti))
     26    (define (smuni-5 porsi mapti namapti) (smuni-42 porsi mapti namapti))
     27    (define (naselci-6 porsi mapti namapti) (naselci-43 porsi mapti namapti))
     28    (define (javni-7 porsi mapti namapti) (javni-44 porsi mapti namapti))
     29    (define (jonai-8 porsi mapti namapti) (jonai-45 porsi mapti namapti))
     30    (define (je-9 porsi mapti namapti) (je-46 porsi mapti namapti))
     31    (define (nastura-pajavni-10 porsi mapti namapti)
     32      (nastura-pajavni-47 porsi mapti namapti))
     33    (define (pajavni-13 porsi mapti namapti) (pajavni-48 porsi mapti namapti))
     34    (define (optional-14 porsi mapti namapti)
     35      (optional-49 porsi mapti namapti))
     36    (define (zero-or-more-15 porsi mapti namapti)
     37      (zero-or-more-50 porsi mapti namapti))
     38    (define (one-or-more-16 porsi mapti namapti)
     39      (one-or-more-51 porsi mapti namapti))
     40    (define (and-predicate-17 porsi mapti namapti)
     41      (and-predicate-52 porsi mapti namapti))
     42    (define (end-of-input-18 porsi mapti namapti)
     43      (end-of-input-53 porsi mapti namapti))
     44    (define (not-predicate-19 porsi mapti namapti)
     45      (not-predicate-54 porsi mapti namapti))
     46    (define (cmene-sumti-11 porsi mapti namapti)
     47      (cmene-sumti-55 porsi mapti namapti))
     48    (define (selci-javni-20 porsi mapti namapti)
     49      (selci-javni-56 porsi mapti namapti))
     50    (define (selci-naselci-21 porsi mapti namapti)
     51      (selci-naselci-57 porsi mapti namapti))
     52    (define (lerfu-selci-22 porsi mapti namapti)
     53      (lerfu-selci-58 porsi mapti namapti))
     54    (define (lerfu-cmene-27 porsi mapti namapti)
     55      (lerfu-cmene-59 porsi mapti namapti))
     56    (define (valsi-selci-23 porsi mapti namapti)
     57      (valsi-selci-60 porsi mapti namapti))
     58    (define (valsi-lerfu-28 porsi mapti namapti)
     59      (valsi-lerfu-61 porsi mapti namapti))
     60    (define (klesi-selci-24 porsi mapti namapti)
     61      (klesi-selci-62 porsi mapti namapti))
     62    (define (klesi-lerfu-29 porsi mapti namapti)
     63      (klesi-lerfu-63 porsi mapti namapti))
     64    (define (klesi-cmene-30 porsi mapti namapti)
     65      (klesi-cmene-64 porsi mapti namapti))
     66    (define (denpabu-25 porsi mapti namapti) (denpabu-65 porsi mapti namapti))
     67    (define (samselpla-12 porsi mapti namapti)
     68      (samselpla-66 porsi mapti namapti))
     69    (define (samselpla-xadni-31 porsi mapti namapti)
     70      (samselpla-xadni-67 porsi mapti namapti))
     71    (define (samselpla-cmene-32 porsi mapti namapti)
     72      (samselpla-cmene-68 porsi mapti namapti))
     73    (define (girzu-javni-26 porsi mapti namapti)
     74      (girzu-javni-69 porsi mapti namapti))
     75    (define (canlu-1 porsi mapti namapti) (canlu-70 porsi mapti namapti))
     76    (define (canlubu-33 porsi mapti namapti) (canlubu-71 porsi mapti namapti))
     77    (define (totoi-34 porsi mapti namapti) (totoi-72 porsi mapti namapti))
     78    (define (CR-35 porsi mapti namapti) (CR-73 porsi mapti namapti))
     79    (define (LF-36 porsi mapti namapti) (LF-74 porsi mapti namapti))
     80    (define (CRLF-37 porsi mapti namapti) (CRLF-75 porsi mapti namapti))
     81    (define (FAhO-4 porsi mapti namapti) (FAhO-76 porsi mapti namapti))
     82    (define cfari-39
    8183      (nunjavni-morji
    8284        (morji-nunjavni-samselpla
     
    8890            (morji-nunjavni-cmene gerna-3 cmene: "gerna")
    8991            FAhO-4))))
    90     (define cfari-samselpla-7
     92    (define cfari-samselpla-40
    9193      (nunjavni-morji
    9294        (morji-nunjavni-samselpla
     
    9698            canlu-1
    9799            (morji-nunjavni-+
    98               (morji-nunjavni-samselpla
    99                 samselpla-samselpla-lerfu
    100                 (morji-nunjavni-je
    101                   (morji-nunjavni-! (morji-nunjavni-lerfu #\}))
    102                   (morji-nunjavni-. cmene: "lerfu")))
     100              (morji-nunjavni-je
     101                (morji-nunjavni-! (morji-nunjavni-lerfu #\}))
     102                (morji-nunjavni-.))
    103103              cmene:
    104104              "rodalerfu")
    105105            (morji-nunjavni-lerfu #\})
    106106            canlu-1))))
    107     (define gerna-9 (nunjavni-morji (morji-nunjavni-* smuni-8)))
    108     (define smuni-12
     107    (define gerna-41 (nunjavni-morji (morji-nunjavni-* smuni-5)))
     108    (define smuni-42
    109109      (nunjavni-morji
    110110        (morji-nunjavni-samselpla
    111111          samselpla-smuni
    112112          (morji-nunjavni-je
    113             (morji-nunjavni-cmene naselci-10 cmene: "naselci")
     113            (morji-nunjavni-cmene naselci-6 cmene: "naselci")
    114114            (morji-nunjavni-valsi "<-")
    115115            canlu-1
    116             (morji-nunjavni-cmene javni-11 cmene: "javni")))))
    117     (define naselci-13
     116            (morji-nunjavni-cmene javni-7 cmene: "javni")))))
     117    (define naselci-43
    118118      (nunjavni-morji
    119119        (morji-nunjavni-samselpla
     
    133133              "fanmo")
    134134            canlu-1))))
    135     (define javni-16 (nunjavni-morji (morji-nunjavni-jonai jonai-14 je-15)))
    136     (define jonai-17
     135    (define javni-44 (nunjavni-morji (morji-nunjavni-jonai jonai-8 je-9)))
     136    (define jonai-45
    137137      (nunjavni-morji
    138138        (morji-nunjavni-samselpla
    139139          samselpla-jonai
    140140          (morji-nunjavni-je
    141             (morji-nunjavni-cmene je-15 cmene: "cfari")
     141            (morji-nunjavni-cmene je-9 cmene: "cfari")
    142142            (morji-nunjavni-+
    143               (morji-nunjavni-samselpla
    144                 samselpla-jonai-je
    145                 (morji-nunjavni-je
    146                   (morji-nunjavni-lerfu #\/)
    147                   canlu-1
    148                   (morji-nunjavni-cmene je-15 cmene: "je")))
     143              (morji-nunjavni-je (morji-nunjavni-lerfu #\/) canlu-1 je-9)
    149144              cmene:
    150145              "fanmo")))))
    151     (define je-21
     146    (define je-46
    152147      (nunjavni-morji
    153148        (morji-nunjavni-samselpla
    154149          samselpla-je
    155150          (morji-nunjavni-je
    156             (morji-nunjavni-+ pajavni-18 cmene: "rodajavni")
    157             (morji-nunjavni-? cmene-sumti-19 cmene: "cmene")
    158             (morji-nunjavni-? samselpla-20 cmene: "samselpla")))))
    159     (define pajavni-29
    160       (nunjavni-morji
    161         (morji-nunjavni-jonai
    162           optional-22
    163           repetition0-23
    164           repetition1-24
    165           and-predicate-25
    166           end-of-input-26
    167           not-predicate-27
     151            (morji-nunjavni-+ nastura-pajavni-10 cmene: "rodajavni")
     152            (morji-nunjavni-? cmene-sumti-11 cmene: "cmene")
     153            (morji-nunjavni-? samselpla-12 cmene: "samselpla")))))
     154    (define nastura-pajavni-47
     155      (nunjavni-morji
     156        (morji-nunjavni-jonai
     157          (morji-nunjavni-samselpla
     158            samselpla-nastura-javni
     159            (morji-nunjavni-je
     160              (morji-nunjavni-lerfu #\')
     161              canlu-1
     162              (morji-nunjavni-cmene pajavni-13 cmene: "javni")))
     163          pajavni-13)))
     164    (define pajavni-48
     165      (nunjavni-morji
     166        (morji-nunjavni-jonai
     167          optional-14
     168          zero-or-more-15
     169          one-or-more-16
     170          and-predicate-17
     171          end-of-input-18
     172          not-predicate-19
    168173          (morji-nunjavni-samselpla
    169174            samselpla-pajavni-cmene
    170175            (morji-nunjavni-je
    171               (morji-nunjavni-? cmene-sumti-19 cmene: "cmene")
    172               (morji-nunjavni-cmene selci-javni-28 cmene: "javni"))))))
    173     (define optional-30
     176              (morji-nunjavni-? cmene-sumti-11 cmene: "cmene")
     177              (morji-nunjavni-cmene selci-javni-20 cmene: "javni"))))))
     178    (define optional-49
    174179      (nunjavni-morji
    175180        (morji-nunjavni-samselpla
    176181          samselpla-?
    177182          (morji-nunjavni-je
    178             (morji-nunjavni-? cmene-sumti-19 cmene: "cmene")
    179             (morji-nunjavni-cmene selci-javni-28 cmene: "javni")
     183            (morji-nunjavni-? cmene-sumti-11 cmene: "cmene")
     184            (morji-nunjavni-cmene selci-javni-20 cmene: "javni")
    180185            (morji-nunjavni-lerfu #\?)
    181186            canlu-1))))
    182     (define repetition0-31
     187    (define zero-or-more-50
    183188      (nunjavni-morji
    184189        (morji-nunjavni-samselpla
    185190          samselpla-*
    186191          (morji-nunjavni-je
    187             (morji-nunjavni-? cmene-sumti-19 cmene: "cmene")
    188             (morji-nunjavni-cmene selci-javni-28 cmene: "javni")
     192            (morji-nunjavni-? cmene-sumti-11 cmene: "cmene")
     193            (morji-nunjavni-cmene selci-javni-20 cmene: "javni")
    189194            (morji-nunjavni-lerfu #\*)
    190195            canlu-1))))
    191     (define repetition1-32
     196    (define one-or-more-51
    192197      (nunjavni-morji
    193198        (morji-nunjavni-samselpla
    194199          samselpla-+
    195200          (morji-nunjavni-je
    196             (morji-nunjavni-? cmene-sumti-19 cmene: "cmene")
    197             (morji-nunjavni-cmene selci-javni-28 cmene: "javni")
     201            (morji-nunjavni-? cmene-sumti-11 cmene: "cmene")
     202            (morji-nunjavni-cmene selci-javni-20 cmene: "javni")
    198203            (morji-nunjavni-lerfu #\+)
    199204            canlu-1))))
    200     (define and-predicate-33
     205    (define and-predicate-52
    201206      (nunjavni-morji
    202207        (morji-nunjavni-samselpla
     
    205210            (morji-nunjavni-lerfu #\&)
    206211            canlu-1
    207             (morji-nunjavni-cmene selci-javni-28 cmene: "javni")))))
    208     (define end-of-input-34
     212            (morji-nunjavni-cmene selci-javni-20 cmene: "javni")))))
     213    (define end-of-input-53
    209214      (nunjavni-morji
    210215        (morji-nunjavni-samselpla
     
    215220            (morji-nunjavni-lerfu #\.)
    216221            canlu-1))))
    217     (define not-predicate-35
     222    (define not-predicate-54
    218223      (nunjavni-morji
    219224        (morji-nunjavni-samselpla
     
    222227            (morji-nunjavni-lerfu #\!)
    223228            canlu-1
    224             (morji-nunjavni-cmene selci-javni-28 cmene: "javni")))))
    225     (define cmene-sumti-36
     229            (morji-nunjavni-cmene selci-javni-20 cmene: "javni")))))
     230    (define cmene-sumti-55
    226231      (nunjavni-morji
    227232        (morji-nunjavni-samselpla
     
    242247              "fanmo")
    243248            canlu-1))))
    244     (define selci-javni-43
    245       (nunjavni-morji
    246         (morji-nunjavni-jonai
    247           selci-naselci-37
    248           lerfu-selci-38
    249           valsi-selci-39
    250           klesi-selci-40
    251           denpabu-41
    252           girzu-javni-42)))
    253     (define selci-naselci-44
     249    (define selci-javni-56
     250      (nunjavni-morji
     251        (morji-nunjavni-jonai
     252          selci-naselci-21
     253          lerfu-selci-22
     254          valsi-selci-23
     255          klesi-selci-24
     256          denpabu-25
     257          girzu-javni-26)))
     258    (define selci-naselci-57
    254259      (nunjavni-morji
    255260        (morji-nunjavni-samselpla
    256261          samselpla-selci-naselci
    257262          (morji-nunjavni-je
    258             (morji-nunjavni-cmene naselci-10 cmene: "naselci")
     263            (morji-nunjavni-cmene naselci-6 cmene: "naselci")
    259264            (morji-nunjavni-! (morji-nunjavni-valsi "<-"))))))
    260     (define lerfu-selci-46
    261       (nunjavni-morji
    262         (morji-nunjavni-jonai
     265    (define lerfu-selci-58
     266      (nunjavni-morji
     267        (morji-nunjavni-jonai
     268          (morji-nunjavni-samselpla
     269            samselpla-stura-lerfu-selci
     270            (morji-nunjavni-je
     271              (morji-nunjavni-valsi ",#\\")
     272              (morji-nunjavni-cmene lerfu-cmene-27 cmene: "lerfu")
     273              canlu-1))
     274          (morji-nunjavni-samselpla
     275            samselpla-stura-lerfu-selci
     276            (morji-nunjavni-je
     277              (morji-nunjavni-valsi ",#\\")
     278              (morji-nunjavni-. cmene: "lerfu")
     279              canlu-1))
    263280          (morji-nunjavni-samselpla
    264281            samselpla-lerfu-selci
    265282            (morji-nunjavni-je
    266283              (morji-nunjavni-valsi "#\\")
    267               (morji-nunjavni-cmene lerfu-cmene-45 cmene: "lerfu")
     284              (morji-nunjavni-cmene lerfu-cmene-27 cmene: "lerfu")
    268285              canlu-1))
    269286          (morji-nunjavni-samselpla
     
    273290              (morji-nunjavni-. cmene: "lerfu")
    274291              canlu-1)))))
    275     (define lerfu-cmene-47
     292    (define lerfu-cmene-59
    276293      (nunjavni-morji
    277294        (morji-nunjavni-jonai
     
    294311            samselpla-lerfu-tab
    295312            (morji-nunjavni-valsi "tab")))))
    296     (define valsi-selci-49
    297       (nunjavni-morji
    298         (morji-nunjavni-samselpla
    299           samselpla-valsi-selci
    300           (morji-nunjavni-je
    301             (morji-nunjavni-lerfu #\")
    302             (morji-nunjavni-*
    303               (morji-nunjavni-samselpla
    304                 samselpla-valsi-selci-lerfu
     313    (define valsi-selci-60
     314      (nunjavni-morji
     315        (morji-nunjavni-jonai
     316          (morji-nunjavni-samselpla
     317            samselpla-stura-valsi-selci
     318            (morji-nunjavni-je
     319              (morji-nunjavni-valsi ",\"")
     320              (morji-nunjavni-*
    305321                (morji-nunjavni-je
    306322                  (morji-nunjavni-! (morji-nunjavni-lerfu #\"))
    307                   (morji-nunjavni-cmene valsi-lerfu-48 cmene: "lerfu")))
    308               cmene:
    309               "valsi-lerfu")
    310             (morji-nunjavni-lerfu #\")
    311             canlu-1))))
    312     (define valsi-lerfu-50
     323                  valsi-lerfu-28)
     324                cmene:
     325                "valsi-lerfu")
     326              (morji-nunjavni-lerfu #\")
     327              canlu-1))
     328          (morji-nunjavni-samselpla
     329            samselpla-valsi-selci
     330            (morji-nunjavni-je
     331              (morji-nunjavni-lerfu #\")
     332              (morji-nunjavni-*
     333                (morji-nunjavni-je
     334                  (morji-nunjavni-! (morji-nunjavni-lerfu #\"))
     335                  valsi-lerfu-28)
     336                cmene:
     337                "valsi-lerfu")
     338              (morji-nunjavni-lerfu #\")
     339              canlu-1)))))
     340    (define valsi-lerfu-61
    313341      (nunjavni-morji
    314342        (morji-nunjavni-jonai
     
    348376              (morji-nunjavni-! (morji-nunjavni-lerfu #\\))
    349377              (morji-nunjavni-. cmene: "lerfu"))))))
    350     (define klesi-selci-52
     378    (define klesi-selci-62
    351379      (nunjavni-morji
    352380        (morji-nunjavni-jonai
     
    355383            (morji-nunjavni-je
    356384              (morji-nunjavni-lerfu #\[)
    357               (morji-nunjavni-+ klesi-lerfu-51 cmene: "klesi-lerfu")
     385              (morji-nunjavni-+ klesi-lerfu-29 cmene: "klesi-lerfu")
    358386              (morji-nunjavni-valsi "]*")
    359387              canlu-1))
     
    362390            (morji-nunjavni-je
    363391              (morji-nunjavni-lerfu #\[)
    364               (morji-nunjavni-+ klesi-lerfu-51 cmene: "klesi-lerfu")
     392              (morji-nunjavni-+ klesi-lerfu-29 cmene: "klesi-lerfu")
    365393              (morji-nunjavni-valsi "]+")
    366394              canlu-1))
     
    369397            (morji-nunjavni-je
    370398              (morji-nunjavni-lerfu #\[)
    371               (morji-nunjavni-+ klesi-lerfu-51 cmene: "klesi-lerfu")
     399              (morji-nunjavni-+ klesi-lerfu-29 cmene: "klesi-lerfu")
    372400              (morji-nunjavni-lerfu #\])
    373401              canlu-1)))))
    374     (define klesi-lerfu-54
    375       (nunjavni-morji
    376         (morji-nunjavni-jonai
    377           klesi-cmene-53
     402    (define klesi-lerfu-63
     403      (nunjavni-morji
     404        (morji-nunjavni-jonai
     405          klesi-cmene-30
    378406          (morji-nunjavni-samselpla
    379407            samselpla-klesi-lerfu
     
    381409              (morji-nunjavni-! (morji-nunjavni-lerfu #\]))
    382410              (morji-nunjavni-. cmene: "klesi-lerfu"))))))
    383     (define klesi-cmene-55
     411    (define klesi-cmene-64
    384412      (nunjavni-morji
    385413        (morji-nunjavni-jonai
     
    468496            samselpla-^xdigit
    469497            (morji-nunjavni-valsi "[:^xdigit:]")))))
    470     (define denpabu-56
     498    (define denpabu-65
    471499      (nunjavni-morji
    472500        (morji-nunjavni-samselpla
    473501          samselpla-denpabu
    474502          (morji-nunjavni-je (morji-nunjavni-lerfu #\.) canlu-1))))
    475     (define samselpla-59
    476       (nunjavni-morji
    477         (morji-nunjavni-samselpla
    478           samselpla-samselpla
    479           (morji-nunjavni-je
    480             (morji-nunjavni-valsi "->")
    481             canlu-1
    482             (morji-nunjavni-jonai
    483               samselpla-xadni-57
    484               samselpla-cmene-58
    485               cmene:
    486               "samselpla")))))
    487     (define samselpla-xadni-60
     503    (define samselpla-66
     504      (nunjavni-morji
     505        (morji-nunjavni-je
     506          (morji-nunjavni-valsi "->")
     507          canlu-1
     508          (morji-nunjavni-jonai samselpla-xadni-31 samselpla-cmene-32))))
     509    (define samselpla-xadni-67
    488510      (nunjavni-morji
    489511        (morji-nunjavni-samselpla
     
    493515            canlu-1
    494516            (morji-nunjavni-+
    495               (morji-nunjavni-samselpla
    496                 samselpla-samselpla-lerfu
    497                 (morji-nunjavni-je
    498                   (morji-nunjavni-! (morji-nunjavni-lerfu #\}))
    499                   (morji-nunjavni-. cmene: "lerfu")))
     517              (morji-nunjavni-je
     518                (morji-nunjavni-! (morji-nunjavni-lerfu #\}))
     519                (morji-nunjavni-.))
    500520              cmene:
    501521              "rodalerfu")
    502522            (morji-nunjavni-lerfu #\})
    503523            canlu-1))))
    504     (define samselpla-cmene-61
     524    (define samselpla-cmene-68
    505525      (nunjavni-morji
    506526        (morji-nunjavni-samselpla
     
    520540              "fanmo")
    521541            canlu-1))))
    522     (define girzu-javni-62
    523       (nunjavni-morji
    524         (morji-nunjavni-jonai
    525           (morji-nunjavni-samselpla
    526             samselpla-girzu-javni
    527             (morji-nunjavni-je
    528               (morji-nunjavni-lerfu #\()
    529               canlu-1
    530               (morji-nunjavni-cmene javni-11 cmene: "javni")
    531               (morji-nunjavni-lerfu #\))
    532               canlu-1))
     542    (define girzu-javni-69
     543      (nunjavni-morji
     544        (morji-nunjavni-jonai
     545          (morji-nunjavni-je
     546            (morji-nunjavni-lerfu #\()
     547            canlu-1
     548            javni-7
     549            (morji-nunjavni-lerfu #\))
     550            canlu-1)
    533551          (morji-nunjavni-samselpla
    534552            samselpla-empty-string
    535553            (morji-nunjavni-je (morji-nunjavni-valsi "()") canlu-1)))))
    536     (define canlu-65
    537       (nunjavni-morji
    538         (morji-nunjavni-samselpla
    539           samselpla-canlu
    540           (morji-nunjavni-* (morji-nunjavni-jonai canlubu-63 totoi-64)))))
    541     (define canlubu-68
     554    (define canlu-70
     555      (nunjavni-morji
     556        (morji-nunjavni-*
     557          (morji-nunjavni-jonai canlubu-33 totoi-34)
     558          nastura:
     559          #t)))
     560    (define canlubu-71
    542561      (nunjavni-morji
    543562        (morji-nunjavni-jonai
    544563          (morji-nunjavni-lerfu #\space)
    545564          (morji-nunjavni-lerfu #\tab)
    546           CR-66
    547           LF-67)))
    548     (define totoi-70
     565          CR-35
     566          LF-36)))
     567    (define totoi-72
    549568      (nunjavni-morji
    550569        (morji-nunjavni-je
    551570          (morji-nunjavni-lerfu #\;)
    552571          (morji-nunjavni-*
    553             (morji-nunjavni-je (morji-nunjavni-! CRLF-69) (morji-nunjavni-.)))
    554           (morji-nunjavni-jonai CRLF-69 (morji-nunjavni-& FAhO-4)))))
    555     (define CR-71 (nunjavni-morji (morji-nunjavni-lerfu #\return)))
    556     (define LF-72 (nunjavni-morji (morji-nunjavni-lerfu #\newline)))
    557     (define CRLF-73
    558       (nunjavni-morji
    559         (morji-nunjavni-jonai (morji-nunjavni-je CR-66 LF-67) CR-66 LF-67)))
    560     (define FAhO-74 (nunjavni-morji (morji-nunjavni-fanmo)))
     572            (morji-nunjavni-je (morji-nunjavni-! CRLF-37) (morji-nunjavni-.)))
     573          (morji-nunjavni-jonai CRLF-37 (morji-nunjavni-& FAhO-4)))))
     574    (define CR-73 (nunjavni-morji (morji-nunjavni-lerfu #\return)))
     575    (define LF-74 (nunjavni-morji (morji-nunjavni-lerfu #\newline)))
     576    (define CRLF-75
     577      (nunjavni-morji
     578        (morji-nunjavni-jonai (morji-nunjavni-je CR-35 LF-36) CR-35 LF-36)))
     579    (define FAhO-76 (nunjavni-morji (morji-nunjavni-fanmo nastura: #t)))
    561580    (tolmohi-nunjavni)
    562     cfari-6))
     581    cfari-39))
  • release/4/genturfahi/trunk/chicken-ext-peg.scm

    r21887 r21888  
    3434   samselpla-naselci
    3535   samselpla-je
     36   samselpla-nastura-javni
    3637   samselpla-pajavni-cmene
    37    samselpla-jonai-je
    3838   samselpla-jonai
    3939   samselpla-?
     
    4545   samselpla-cmene-sumti
    4646   samselpla-selci-naselci
     47   samselpla-stura-lerfu-selci
    4748   samselpla-lerfu-selci
    4849   samselpla-lerfu-space
     
    5253   samselpla-lerfu-return
    5354   samselpla-lerfu-tab
     55   samselpla-stura-valsi-selci
    5456   samselpla-valsi-selci
    5557   samselpla-valsi-newline
     
    6264   samselpla-klesi-selci
    6365   samselpla-denpabu
    64    samselpla-samselpla
    6566   samselpla-samselpla-xadni
    66    samselpla-samselpla-cmene
    67    samselpla-samselpla-lerfu
    68    samselpla-girzu-javni
    69    samselpla-canlu)
     67   samselpla-samselpla-cmene)
    7068
    7169(import chicken)
  • release/4/genturfahi/trunk/chicken-ext.scm

    r21847 r21888  
    5252   javni-valsi-val
    5353
     54   javni-nastura?
     55
    5456   javni-nunvalsi-val
    5557   javni-rodavalsi-val
     58
     59   ; a version that removes the predicate *-val, for use
     60   ; when returning to code outside of genturfa'i.
     61   ;
     62   javni-nunvalsi-val-filter
     63   javni-rodavalsi-val-filter
    5664
    5765   javni-valsi->string
     
    6068   ; nunvalsi
    6169   ;
     70   make-nunvalsi
     71   venunjmina-nunvalsi
    6272   vejmina-nunvalsi
     73   vejmina-rodanunvalsi
     74   vejmina-rodanunvalsi-nacmene
    6375
    6476   ; nunjavni
     
    8496   nunjavni-samselpla
    8597   nunjavni-cmene
     98   nunjavni-nastura
    8699
    87100   ; morji
     
    108121   morji-nunjavni-samselpla
    109122   morji-nunjavni-cmene
     123   morji-nunjavni-nastura
    110124
    111125
     
    132146   secuxna-empty-string
    133147   secuxna-nonmatch-token
    134    secuxna-sesumti)
     148   secuxna-nastura)
    135149
    136150(import chicken)
  • release/4/genturfahi/trunk/genturfahi.peg

    r21887 r21888  
    2222;;;
    2323
    24 ;; the exit status of the parser.
    25 ;;
    26 ;{(exit-status 0)}
    27 
    2824;; The name of the symbol the parser generator
    2925;; rules will be bound to in the output file.
     
    6561                   canlu
    6662                   #:gerna gerna
    67                    FAhO                          -> {samselpla-cfari}
     63                   FAhO
     64                -> samselpla-cfari
    6865
    6966; we want to execute header code before compiling the grammar.
     
    7168; header code than body code.
    7269;
    73 cfari-samselpla <- #\{
    74                    canlu
    75                    #:rodalerfu (!#\}
    76                                 #:lerfu .
    77                              -> {samselpla-samselpla-lerfu})+
    78                    #\}
    79                    canlu                         -> {samselpla-cfari-samselpla}
     70cfari-samselpla <- #\{ canlu #:rodalerfu (!#\} .)+ #\} canlu
     71                -> samselpla-cfari-samselpla
    8072
    8173gerna           <- smuni*
     
    8476                   "<-"
    8577                   canlu
    86                    #:javni javni                 -> {samselpla-smuni}
     78                   #:javni javni
     79                -> samselpla-smuni
    8780
    8881; this really doesn't need to be so strict.
    8982naselci         <- #:cfari [[:alpha:]_]
    9083                   #:fanmo [[:alnum:]_\-]*
    91                    canlu                         -> {samselpla-naselci}
     84                   canlu
     85                -> samselpla-naselci
    9286
    9387javni           <- jonai
     
    9589
    9690jonai           <- #:cfari je
    97                    #:fanmo (#\/
    98                             canlu
    99                             #:je je
    100                             -> {samselpla-jonai-je})+
    101                                                  -> {samselpla-jonai}
    102 je              <- #:rodajavni pajavni+
     91                   #:fanmo (#\/ canlu je)+
     92                -> samselpla-jonai
     93je              <- #:rodajavni nastura-pajavni+
    10394                   #:cmene     cmene-sumti?
    104                    #:samselpla samselpla?        -> {samselpla-je}
     95                   #:samselpla samselpla?
     96                -> samselpla-je
     97
     98nastura-pajavni <- #\' canlu #:javni pajavni
     99                -> samselpla-nastura-javni
     100                 / pajavni
    105101
    106102pajavni         <- optional
    107                  / repetition0
    108                  / repetition1
     103                 / zero-or-more
     104                 / one-or-more
    109105                 / and-predicate
    110106                 / end-of-input
    111107                 / not-predicate
    112108                 / #:cmene cmene-sumti?
    113                    #:javni selci-javni           -> {samselpla-pajavni-cmene}
     109                   #:javni selci-javni
     110                -> samselpla-pajavni-cmene
    114111
    115112optional        <- #:cmene cmene-sumti?
    116113                   #:javni selci-javni
    117114                   #\?
    118                    canlu                         -> {samselpla-?}
    119 repetition0     <- #:cmene cmene-sumti?
     115                   canlu
     116                -> {samselpla-?}
     117zero-or-more    <- #:cmene cmene-sumti?
    120118                   #:javni selci-javni
    121119                   #\*
    122                    canlu                         -> {samselpla-*}
    123 repetition1     <- #:cmene cmene-sumti?
     120                   canlu
     121                -> {samselpla-*}
     122one-or-more     <- #:cmene cmene-sumti?
    124123                   #:javni selci-javni
    125124                   #\+
    126                    canlu                         -> {samselpla-+}
     125                   canlu
     126                -> {samselpla-+}
    127127and-predicate   <- #\&
    128128                   canlu
    129                    #:javni selci-javni           -> {samselpla-&}
    130 end-of-input    <- #\! canlu #\. canlu           -> {samselpla-fanmo}
     129                   #:javni selci-javni
     130                -> {samselpla-&}
     131end-of-input    <- #\! canlu #\. canlu
     132                -> samselpla-fanmo
    131133not-predicate   <- #\!
    132134                   canlu
    133                    #:javni selci-javni           -> {samselpla-!}
     135                   #:javni selci-javni
     136                -> {samselpla-!}
    134137
    135138cmene-sumti     <- "#:"
    136139                   #:cfari [[:alpha:]_]
    137140                   #:fanmo [[:alnum:]_\-]*
    138                    canlu                         -> {samselpla-cmene-sumti}
     141                   canlu
     142                -> samselpla-cmene-sumti
    139143
    140144selci-javni     <- selci-naselci
     
    145149                 / girzu-javni
    146150
    147 selci-naselci   <- #:naselci naselci !"<-"       -> {samselpla-selci-naselci}
    148 
    149 lerfu-selci     <- "#\\" #:lerfu lerfu-cmene canlu -> {samselpla-lerfu-selci}
    150                  / "#\\" #:lerfu .           canlu -> {samselpla-lerfu-selci}
    151 
    152 lerfu-cmene     <- "space"                       -> {samselpla-lerfu-space}
    153                  / "return"                      -> {samselpla-lerfu-return}
    154                  / "linefeed"                    -> {samselpla-lerfu-linefeed}
    155                  / "newline"                     -> {samselpla-lerfu-newline}
    156                  / "return"                      -> {samselpla-lerfu-return}
    157                  / "tab"                         -> {samselpla-lerfu-tab}
    158 
    159 valsi-selci     <- #\"
    160                    #:valsi-lerfu (!#\"
    161                                   #:lerfu valsi-lerfu
    162                                -> {samselpla-valsi-selci-lerfu})*
     151selci-naselci   <- #:naselci naselci !"<-"
     152                -> samselpla-selci-naselci
     153
     154lerfu-selci     <- ",#\\" #:lerfu lerfu-cmene canlu
     155                -> samselpla-stura-lerfu-selci
     156                 / ",#\\" #:lerfu .           canlu
     157                -> samselpla-stura-lerfu-selci
     158                 / "#\\"  #:lerfu lerfu-cmene canlu
     159                -> samselpla-lerfu-selci
     160                 / "#\\"  #:lerfu .           canlu
     161                -> samselpla-lerfu-selci
     162
     163lerfu-cmene     <- "space"    -> samselpla-lerfu-space
     164                 / "return"   -> samselpla-lerfu-return
     165                 / "linefeed" -> samselpla-lerfu-linefeed
     166                 / "newline"  -> samselpla-lerfu-newline
     167                 / "return"   -> samselpla-lerfu-return
     168                 / "tab"      -> samselpla-lerfu-tab
     169
     170valsi-selci     <- ",\""
     171                   #:valsi-lerfu (!#\" valsi-lerfu)*
    163172                   #\"
    164                    canlu               -> {samselpla-valsi-selci}
    165 valsi-lerfu     <- #\\ #\n             -> {samselpla-valsi-newline}
    166                  / #\\ #\r             -> {samselpla-valsi-linefeed}
    167                  / #\\ #\t             -> {samselpla-valsi-tab}
    168                  / #\\ #\\             -> {samselpla-valsi-backslash}
    169                  / #\\ #\'             -> {samselpla-valsi-single-quote}
    170                  / #\\ #\"             -> {samselpla-valsi-double-quote}
    171                  / !#\\ #:lerfu .      -> {samselpla-valsi-lerfu}
    172 
    173 klesi-selci      <- #\[
    174                     #:klesi-lerfu klesi-lerfu+
    175                     "]*"
    176                     canlu                         -> {samselpla-klesi-selci-*}
    177                   / #\[
    178                     #:klesi-lerfu klesi-lerfu+
    179                     "]+"
    180                     canlu                         -> {samselpla-klesi-selci-+}
    181                   / #\[
    182                     #:klesi-lerfu klesi-lerfu+
    183                     #\]
    184                     canlu                         -> {samselpla-klesi-selci}
     173                   canlu
     174                -> samselpla-stura-valsi-selci
     175                 / #\"
     176                   #:valsi-lerfu (!#\" valsi-lerfu)*
     177                   #\"
     178                   canlu
     179                -> samselpla-valsi-selci
     180valsi-lerfu     <- #\\ #\n        -> samselpla-valsi-newline
     181                 / #\\ #\r        -> samselpla-valsi-linefeed
     182                 / #\\ #\t        -> samselpla-valsi-tab
     183                 / #\\ #\\        -> samselpla-valsi-backslash
     184                 / #\\ #\'        -> samselpla-valsi-single-quote
     185                 / #\\ #\"        -> samselpla-valsi-double-quote
     186                 / !#\\ #:lerfu . -> samselpla-valsi-lerfu
     187
     188klesi-selci      <- #\[ #:klesi-lerfu klesi-lerfu+ "]*" canlu
     189                 -> {samselpla-klesi-selci-*}
     190                  / #\[ #:klesi-lerfu klesi-lerfu+ "]+" canlu
     191                 -> {samselpla-klesi-selci-+}
     192                  / #\[ #:klesi-lerfu klesi-lerfu+ #\]  canlu
     193                 -> samselpla-klesi-selci
    185194
    186195klesi-lerfu      <- klesi-cmene
    187                   / (!#\]
    188                      #:klesi-lerfu .
    189                   -> {samselpla-klesi-lerfu})
    190 klesi-cmene     <- "[:alnum:]"                    -> {samselpla-alnum}
    191                  / "[:alpha:]"                    -> {samselpla-alpha}
    192                  / "[:ascii:]"                    -> {samselpla-ascii}
    193                  / "[:blank:]"                    -> {samselpla-blank}
    194                  / "[:cntrl:]"                    -> {samselpla-cntrl}
    195                  / "[:digit:]"                    -> {samselpla-digit}
    196                  / "[:graph:]"                    -> {samselpla-graph}
    197                  / "[:lower:]"                    -> {samselpla-lower}
    198                  / "[:odigit:]"                   -> {samselpla-odigit}
    199                  / "[:print:]"                    -> {samselpla-print}
    200                  / "[:punct:]"                    -> {samselpla-punct}
    201                  / "[:space:]"                    -> {samselpla-space}
    202                  / "[:upper:]"                    -> {samselpla-upper}
    203                  / "[:xdigit:]"                   -> {samselpla-xdigit}
    204                  / "[:^alnum:]"                   -> {samselpla-^alnum}
    205                  / "[:^alpha:]"                   -> {samselpla-^alpha}
    206                  / "[:^ascii:]"                   -> {samselpla-^ascii}
    207                  / "[:^blank:]"                   -> {samselpla-^blank}
    208                  / "[:^cntrl:]"                   -> {samselpla-^cntrl}
    209                  / "[:^digit:]"                   -> {samselpla-^digit}
    210                  / "[:^graph:]"                   -> {samselpla-^graph}
    211                  / "[:^lower:]"                   -> {samselpla-^lower}
    212                  / "[:^odigit:]"                  -> {samselpla-^odigit}
    213                  / "[:^print:]"                   -> {samselpla-^print}
    214                  / "[:^punct:]"                   -> {samselpla-^punct}
    215                  / "[:^space:]"                   -> {samselpla-^space}
    216                  / "[:^upper:]"                   -> {samselpla-^upper}
    217                  / "[:^xdigit:]"                  -> {samselpla-^xdigit}
    218 
    219 denpabu         <- #\. canlu                      -> {samselpla-denpabu}
     196                  / (!#\] #:klesi-lerfu . -> samselpla-klesi-lerfu)
     197klesi-cmene     <- "[:alnum:]"   -> samselpla-alnum
     198                 / "[:alpha:]"   -> samselpla-alpha
     199                 / "[:ascii:]"   -> samselpla-ascii
     200                 / "[:blank:]"   -> samselpla-blank
     201                 / "[:cntrl:]"   -> samselpla-cntrl
     202                 / "[:digit:]"   -> samselpla-digit
     203                 / "[:graph:]"   -> samselpla-graph
     204                 / "[:lower:]"   -> samselpla-lower
     205                 / "[:odigit:]"  -> samselpla-odigit
     206                 / "[:print:]"   -> samselpla-print
     207                 / "[:punct:]"   -> samselpla-punct
     208                 / "[:space:]"   -> samselpla-space
     209                 / "[:upper:]"   -> samselpla-upper
     210                 / "[:xdigit:]"  -> samselpla-xdigit
     211                 / "[:^alnum:]"  -> {samselpla-^alnum}
     212                 / "[:^alpha:]"  -> {samselpla-^alpha}
     213                 / "[:^ascii:]"  -> {samselpla-^ascii}
     214                 / "[:^blank:]"  -> {samselpla-^blank}
     215                 / "[:^cntrl:]"  -> {samselpla-^cntrl}
     216                 / "[:^digit:]"  -> {samselpla-^digit}
     217                 / "[:^graph:]"  -> {samselpla-^graph}
     218                 / "[:^lower:]"  -> {samselpla-^lower}
     219                 / "[:^odigit:]" -> {samselpla-^odigit}
     220                 / "[:^print:]"  -> {samselpla-^print}
     221                 / "[:^punct:]"  -> {samselpla-^punct}
     222                 / "[:^space:]"  -> {samselpla-^space}
     223                 / "[:^upper:]"  -> {samselpla-^upper}
     224                 / "[:^xdigit:]" -> {samselpla-^xdigit}
     225
     226denpabu         <- #\. canlu
     227                -> samselpla-denpabu
    220228
    221229samselpla       <- "->"
    222230                   canlu
    223                    #:samselpla ( samselpla-xadni
    224                                / samselpla-cmene ) -> {samselpla-samselpla}
    225 
    226 samselpla-xadni <- #\{
    227                    canlu
    228                    #:rodalerfu (!#\}
    229                                 #:lerfu .
    230                              -> {samselpla-samselpla-lerfu})+
    231                    #\}
    232                    canlu                          -> {samselpla-samselpla-xadni}
     231                   ( samselpla-xadni
     232                   / samselpla-cmene )
     233
     234samselpla-xadni <- #\{ canlu #:rodalerfu (!#\} .)+ #\} canlu
     235                -> samselpla-samselpla-xadni
    233236
    234237samselpla-cmene <- #:cfari [[:alpha:]_]
    235238                   #:fanmo [[:alnum:]_\-]*
    236                    canlu                          -> {samselpla-samselpla-cmene}
    237 
    238 girzu-javni     <- #\( canlu #:javni javni #\) canlu -> {samselpla-girzu-javni}
    239                  / "()" canlu                     -> {samselpla-empty-string}
    240 
    241 canlu           <- (canlubu / totoi)*             -> {samselpla-canlu}
     239                   canlu
     240                -> samselpla-samselpla-cmene
     241
     242girzu-javni     <- #\( canlu javni #\) canlu
     243                 / "()" canlu
     244                -> samselpla-empty-string
     245
     246canlu           <- '(canlubu / totoi)*
    242247
    243248canlubu         <- #\space
     
    253258                /  LF
    254259
    255 FAhO            <- !.
     260FAhO            <- '!.
  • release/4/genturfahi/trunk/genturfahi.scm

    r21650 r21888  
    3737    (genturfahi-tolmohi)
    3838
    39     (values (javni-nunvalsi-val nunvalsi)
     39    (values (javni-nunvalsi-val-filter nunvalsi)
    4040            (lerfu-porsi-string porsi)))
    4141
  • release/4/genturfahi/trunk/javni-valsi.scm

    r21847 r21888  
    2727  (val javni-valsi-val))
    2828
     29(define (javni-nastura? javni)
     30  (eq? secuxna-nastura javni))
     31
    2932(define (javni-nunvalsi-val nunvalsi)
    30   (define (sesumti? sumti)
    31     (eq? secuxna-sesumti sumti))
     33  (javni-rodavalsi-val (nunvalsi)))
    3234
    33   (let ((valsi (nunvalsi)))
    34     (if (javni-valsi? valsi)
    35         (javni-valsi-val valsi)
    36         (call-with-values
    37 
    38           ; remove predicate javni-valsi from the list.
    39           ;
    40           (lambda () (partition sesumti? (map javni-rodavalsi-val valsi)))
    41 
    42           ;; if there is only a single non-predicate element
    43           ;; in a list that contained predicate elements,
    44           ;; return the single element rather than a list with
    45           ;; that element.
    46           ;;
    47           (lambda (sesumti jalge)
    48             (if (and (pair? sesumti) (pair? jalge) (null? (cdr jalge)))
    49                 (car jalge)
    50                 jalge))))))
     35(define (javni-nunvalsi-val-filter nunvalsi)
     36  (javni-rodavalsi-val-filter (nunvalsi)))
    5137
    5238(define (javni-rodavalsi-val valsi)
    53   (define (sesumti? sumti)
    54     (eq? secuxna-sesumti sumti))
    55 
    5639  (if (javni-valsi? valsi)
    5740      (javni-valsi-val valsi)
     
    6043        ; remove predicate javni-valsi from the list.
    6144        ;
    62         (lambda () (partition sesumti? (map javni-rodavalsi-val valsi)))
    63         (lambda (sesumti jalge)
     45        (lambda () (partition javni-nastura? (map javni-rodavalsi-val valsi)))
    6446
     47        (lambda (nastura jalge)
    6548          ; if there is only a single non-predicate element
    6649          ; in a list that contained predicate elements,
     
    6851          ; that element.
    6952          ;
    70           (if (and (pair? sesumti) (pair? jalge) (null? (cdr jalge)))
    71               (car jalge)
     53          ; If all of the elements were predicate elements,
     54          ; return a predicate element.  (which will be removed
     55          ; later.)
     56          ;
     57          (if (pair? nastura)
     58              (if (pair? jalge)
     59                  (if (null? (cdr jalge))
     60                      (car jalge)
     61                      jalge)
     62                  secuxna-nastura)
    7263              jalge)))))
     64
     65(define (javni-rodavalsi-val-filter valsi)
     66  ; if the only result was a predicate marker, don't return it.
     67  ;
     68  (if (javni-valsi? valsi)
     69      (let ((val (javni-valsi-val valsi)))
     70        (if (javni-nastura? val)
     71            '()
     72            val))
     73      (remove javni-nastura? (map javni-rodavalsi-val valsi))))
     74
    7375
    7476(define (javni-valsi->string valsi)
  • release/4/genturfahi/trunk/morji.scm

    r21825 r21888  
    8282(define morji-nunjavni-samselpla  (nunmorji-nunjavni nunjavni-samselpla))
    8383(define morji-nunjavni-cmene      (nunmorji-nunjavni nunjavni-cmene))
     84(define morji-nunjavni-nastura    (nunmorji-nunjavni nunjavni-nastura))
  • release/4/genturfahi/trunk/nunjavni.scm

    r21848 r21888  
    2424;; selci: parse a single specified character.
    2525;;
    26 (define (nunjavni-lerfu lerfu #!key cmene)
    27   (define (javni-lerfu porsi mapti namapti)
    28     (if (char=? lerfu (lerfu-porsi-lerfu porsi))
    29         (mapti (make-lerfu-porsi-pabalvi-lerfu porsi)
    30                (lambda () (make-javni-valsi cmene lerfu)))
    31         (namapti porsi)))
    32   javni-lerfu)
     26(define (nunjavni-lerfu lerfu #!key cmene (nastura #t))
     27  (let ((nunvalsi-lerfu (make-nunvalsi cmene nastura)))
     28    (define (javni-lerfu porsi mapti namapti)
     29      (if (char=? lerfu (lerfu-porsi-lerfu porsi))
     30          (mapti (make-lerfu-porsi-pabalvi-lerfu porsi)
     31                 (nunvalsi-lerfu lerfu))
     32          (namapti porsi)))
     33    javni-lerfu))
    3334
    3435
    3536;; selci: parse any single character.
    3637;;
    37 (define (nunjavni-. #!key cmene)
    38   (define (javni-. porsi mapti namapti)
    39     (if (lerfu-porsi-fanmo? porsi)
    40         (namapti porsi)
    41         (mapti (make-lerfu-porsi-pabalvi-lerfu porsi)
    42                (lambda ()
    43                  (make-javni-valsi cmene (lerfu-porsi-lerfu porsi))))))
    44   javni-.)
     38(define (nunjavni-. #!key cmene nastura)
     39  (let ((nunvalsi-. (make-nunvalsi cmene nastura)))
     40    (define (javni-. porsi mapti namapti)
     41      (if (lerfu-porsi-fanmo? porsi)
     42          (namapti porsi)
     43          (mapti (make-lerfu-porsi-pabalvi-lerfu porsi)
     44                 (nunvalsi-. (lerfu-porsi-lerfu porsi)))))
     45    javni-.))
    4546
    4647
     
    4849;;               advancing input.
    4950;;
    50 (define (nunjavni-e #!key cmene (empty-string ""))
    51   (define (javni-e porsi mapti namapti)
    52     (mapti porsi (lambda () (make-javni-valsi cmene empty-string))))
    53   javni-e)
     51(define (nunjavni-e #!key cmene nastura (empty-string ""))
     52  (let ((nunvalsi-e (make-nunvalsi cmene nastura)))
     53    (define (javni-e porsi mapti ignore-namapti)
     54      (mapti porsi (nunvalsi-e empty-string)))
     55    javni-e))
    5456
    5557
     
    5961;; be a separate option for the value to return at the end of the file?
    6062;;
    61 (define (nunjavni-fanmo #!key cmene (sentinel #\nul))
    62   (define (javni-fanmo porsi mapti namapti)
    63     (if (lerfu-porsi-fanmo? porsi)
    64         (mapti porsi (lambda () (make-javni-valsi cmene sentinel)))
    65         (namapti porsi)))
    66   javni-fanmo)
     63(define (nunjavni-fanmo #!key cmene nastura (sentinel #\nul))
     64  (let ((nunvalsi-fanmo (make-nunvalsi cmene nastura)))
     65    (define (javni-fanmo porsi mapti namapti)
     66      (if (lerfu-porsi-fanmo? porsi)
     67          (mapti porsi (nunvalsi-fanmo sentinel))
     68          (namapti porsi)))
     69  javni-fanmo))
    6770
    6871
    6972;; selci: parse the specified string
    7073;;
    71 (define (nunjavni-valsi valsi #!key cmene)
    72   (let ((nilcla (string-length valsi)))
     74(define (nunjavni-valsi valsi #!key cmene (nastura #t))
     75  (let ((nilcla (string-length valsi))
     76        (nunvalsi-valsi (make-nunvalsi cmene nastura)))
    7377    (define (javni-valsi porsi mapti namapti)
    7478      (let ((poi (lerfu-porsi-poi porsi))
     
    8185                            (- (string-length poi) 1))
    8286            (mapti (make-lerfu-porsi-pabalvi-valsi porsi nilcla)
    83                    (lambda () (make-javni-valsi cmene valsi)))
     87                   (nunvalsi-valsi valsi))
    8488            (namapti porsi))))
    8589    javni-valsi))
    8690
    8791
    88 (define (nunjavni-char-set-* char-set #!key cmene)
    89   (define (javni-char-set-* porsi
    90                             mapti
    91                             ignore-namapti
    92                             #!optional (poi (lerfu-porsi-poi porsi))
    93                                        (zva (lerfu-porsi-zva porsi)))
    94     (define (mapti-char-set-* zva)
    95       (let ((puzva (lerfu-porsi-zva porsi)))
    96         (mapti (make-lerfu-porsi-pabalvi-valsi porsi (- zva puzva))
    97                (lambda ()
    98                  (make-javni-valsi cmene (string-copy poi puzva zva))))))
    99 
    100     (define (char-set-* poi zva)
    101       (if (char-set-contains? char-set (string-ref poi zva))
    102           (char-set-* poi (+ 1 zva))
    103           zva))
    104 
    105     (mapti-char-set-* (char-set-* poi zva)))
    106   javni-char-set-*)
    107 
    108 
    109 (define (nunjavni-char-set-+ char-set #!key cmene)
    110   (let ((javni-char-set-* (nunjavni-char-set-* char-set cmene: cmene)))
     92(define (nunjavni-char-set-* char-set #!key cmene nastura)
     93  (let ((nunvalsi-char-set-* (make-nunvalsi cmene nastura)))
     94    (define (javni-char-set-* porsi
     95                              mapti
     96                              ignore-namapti
     97                              #!optional (poi (lerfu-porsi-poi porsi))
     98                                         (zva (lerfu-porsi-zva porsi)))
     99      (define (mapti-char-set-* zva)
     100        (let ((puzva (lerfu-porsi-zva porsi)))
     101          (mapti (make-lerfu-porsi-pabalvi-valsi porsi (- zva puzva))
     102                 (nunvalsi-char-set-* (string-copy poi puzva zva)))))
     103
     104      (define (char-set-* poi zva)
     105        (if (char-set-contains? char-set (string-ref poi zva))
     106            (char-set-* poi (+ 1 zva))
     107            zva))
     108
     109      (mapti-char-set-* (char-set-* poi zva)))
     110    javni-char-set-*))
     111
     112
     113(define (nunjavni-char-set-+ char-set #!key cmene nastura)
     114  (let ((javni-char-set-* (nunjavni-char-set-* char-set
     115                                               cmene: cmene
     116                                               nastura: nastura)))
    111117    (define (javni-char-set-+ porsi mapti namapti)
    112118      (let ((poi        (lerfu-porsi-poi porsi))
     
    121127    javni-char-set-+))
    122128
    123 (define (nunjavni-char-set char-set #!key cmene)
    124   (define (javni-char-set porsi mapti namapti)
    125 
    126     (let* ((poi        (lerfu-porsi-poi porsi))
    127            (zva        (lerfu-porsi-zva porsi)))
    128       (if (char-set-contains? char-set (string-ref poi zva))
    129           (mapti (make-lerfu-porsi-pabalvi-lerfu porsi)
    130                  (lambda ()
    131                    (make-javni-valsi cmene (lerfu-porsi-lerfu porsi))))
    132           (namapti porsi))))
    133   javni-char-set)
     129;; XXX: inline optimize
     130(define (nunjavni-char-set char-set #!key cmene nastura)
     131  (let ((nunvalsi-char-set (make-nunvalsi cmene nastura)))
     132    (define (javni-char-set porsi mapti namapti)
     133
     134      (let* ((poi        (lerfu-porsi-poi porsi))
     135             (zva        (lerfu-porsi-zva porsi)))
     136        (if (char-set-contains? char-set (string-ref poi zva))
     137            (mapti (make-lerfu-porsi-pabalvi-lerfu porsi)
     138                   (nunvalsi-char-set (lerfu-porsi-lerfu porsi)))
     139            (namapti porsi))))
     140    javni-char-set))
    134141
    135142;; zero-or-more: parse zero or more javni out of the |lerfu-porsi|.
    136143;;
    137 (define (nunjavni-* javni #!key cmene)
     144(define (nunjavni-* javni #!key cmene nastura)
    138145        ; we merge the results differently when we have a cmene.
    139146        ; generate the merge routine based on this.
    140   (let ((vejmina (venunjmina-rodanunvalsi cmene)))
     147  (let ((vejmina (venunjmina-rodanunvalsi cmene nastura)))
    141148    (define (javni-* porsi
    142149                     mapti
     
    173180;; one-or-more: parse one or more javni out of the |lerfu-porsi|.
    174181;;
    175 (define (nunjavni-+ javni #!key cmene)
    176   (let ((javni-* (nunjavni-* javni cmene: cmene)))
     182(define (nunjavni-+ javni #!key cmene nastura)
     183  (let ((javni-* (nunjavni-* javni cmene: cmene nastura: nastura)))
    177184    (define (javni-+ porsi mapti namapti)
    178185      (define (mapti-+ porsi nunvalsi)
     
    189196;; optional: parse an optional javni out of the |lerfu-porsi|.
    190197;;
    191 (define (nunjavni-? javni #!key cmene (empty-string ""))
    192   (let ((vejmina (venunjmina-nunvalsi cmene)))
     198(define (nunjavni-? javni #!key cmene nastura (empty-string ""))
     199  (let ((vejmina (venunjmina-nunvalsi cmene nastura)))
    193200    (define (javni-? porsi mapti ignore-namapti)
    194201
     
    213220  (define (javni-& porsi mapti namapti)
    214221    (define (mapti-& ignore-porsi ignore-nunvalsi)
    215       (mapti porsi (lambda () (make-javni-valsi #f secuxna-sesumti))))
     222      (mapti porsi (lambda () (make-javni-valsi #f secuxna-nastura))))
    216223
    217224    (define (namapti-& ignore-porsi)
     
    231238
    232239    (define (namapti-! ignore-porsi)
    233       (mapti porsi (lambda () (make-javni-valsi #f secuxna-sesumti))))
     240      (mapti porsi (lambda () (make-javni-valsi #f secuxna-nastura))))
    234241
    235242    (javni porsi mapti-! namapti-!))
     
    240247;;           if any of the do not match, none of them match.
    241248;;
    242 (define (nunjavni-je #!rest rodajavni #!key cmene)
     249(define (nunjavni-je #!rest rodajavni #!key cmene nastura)
    243250        ; we merge the results differently when we have a cmene.
    244251        ; generate the merge routine based on this.
    245   (let ((vejmina   (venunjmina-rodanunvalsi cmene))
     252  (let ((vejmina   (venunjmina-rodanunvalsi cmene nastura))
    246253        ; remove #!key name/value pairs from argument list.
    247254        (rodajavni (filter procedure? rodajavni)))
     
    299306;;                 |lerfu-porsi|.
    300307;;
    301 (define (nunjavni-jonai #!rest rodajavni #!key cmene)
     308(define (nunjavni-jonai #!rest rodajavni #!key cmene nastura)
    302309        ; we merge the results differently when we have a cmene.
    303310        ; generate the merge routine based on this.
    304   (let ((vejmina   (venunjmina-nunvalsi cmene))
     311  (let ((vejmina   (venunjmina-nunvalsi cmene nastura))
    305312        ; remove #!key name/value pairs from argument list.
    306313        (rodajavni (filter procedure? rodajavni)))
     
    416423  (define (javni-samselpla porsi mapti namapti)
    417424    (define (mapti-samselpla porsi nunvalsi)
     425
     426      (define (samselpla-sumti rodavalsi)
     427        (call-with-values
     428          (lambda ()
     429            (partition (lambda (javni) (and (javni-valsi? javni)
     430                                            (javni-valsi-cme javni)))
     431                       (if (list? rodavalsi)
     432                           rodavalsi
     433                           `(,rodavalsi))))
     434         
     435          (lambda (cmesumti sumti)
     436            (let ((key (append-map!
     437                         (lambda (javni)
     438                           `(,(string->keyword (javni-valsi-cme javni))
     439                             ,(javni-valsi-val javni)))
     440                         cmesumti))
     441                  (rest (javni-rodavalsi-val-filter sumti)))
     442              (append! rest key)))))
     443
    418444      (define (nunvalsi-samselpla)
    419445        (let* ((rodavalsi (nunvalsi))
    420                (rodacme   (filter javni-valsi-cme
    421                                   (flatten (if (list? rodavalsi)
    422                                                rodavalsi
    423                                                (list rodavalsi)))))
    424                (rodaval   (append-map!
    425                             (lambda (javni)
    426                               (list (string->keyword (javni-valsi-cme javni))
    427                                     (javni-valsi-val javni)))
    428                             rodacme))
     446               (rodaval   (samselpla-sumti rodavalsi))
    429447               (valsi     (apply samselpla rodaval)))
    430448          (make-javni-valsi cmene valsi)))
     449
    431450      (mapti porsi nunvalsi-samselpla))
     451
    432452    (javni porsi mapti-samselpla namapti))
     453
    433454  javni-samselpla)
    434455
    435 (define (nunjavni-cmene javni #!key cmene)
    436   (define (javni-cmene porsi mapti namapti)
    437     (define (mapti-cmene porsi nunvalsi)
    438       (define (nunvalsi-cmene)
    439         (make-javni-valsi cmene (javni-nunvalsi-val nunvalsi)))
    440       (mapti porsi nunvalsi-cmene))
    441     (javni porsi mapti-cmene namapti))
    442   javni-cmene)
     456(define (nunjavni-cmene javni #!key cmene nastura)
     457  (let ((nunvalsi-cmene (make-nunvalsi cmene nastura)))
     458    (define (javni-cmene porsi mapti namapti)
     459      (define (mapti-cmene porsi nunvalsi)
     460        (mapti porsi (nunvalsi-cmene (javni-nunvalsi-val nunvalsi))))
     461      (javni porsi mapti-cmene namapti))
     462    javni-cmene))
     463
     464(define (nunjavni-nastura javni)
     465  (define (javni-nastura porsi mapti namapti)
     466    (define (mapti-nastura porsi ignore-nunvalsi)
     467      (define (nunvalsi-nastura)
     468        (make-javni-valsi #f secuxna-nastura))
     469      (mapti porsi nunvalsi-nastura))
     470    (javni porsi mapti-nastura namapti))
     471  javni-nastura)
  • release/4/genturfahi/trunk/nunvalsi.scm

    r21578 r21888  
    2222;;;
    2323
     24;; Each rule has a flag describing whether to make a javni-valsi
     25;; on a successful match of that rule.  This routine return an
     26;; appropriate constructor, depending on that flag.
     27;;
     28(define (make-nunvalsi cmene nastura)
     29  (if nastura
     30      (lambda (ignore-valsi)
     31        (lambda () (make-javni-valsi cmene secuxna-nastura)))
     32      (lambda (valsi)
     33        (lambda () (make-javni-valsi cmene valsi)))))
     34
    2435;; merge a single nunvalsi with or without a cmene
    2536;;
    26 (define (venunjmina-nunvalsi cmene)
    27   (if cmene
    28       (lambda (nunvalsi)
    29         (vejmina-nunvalsi cmene nunvalsi))
    30       (lambda (nunvalsi)
    31         (vejmina-nunvalsi-nacmene nunvalsi))))
     37(define (venunjmina-nunvalsi cmene nastura)
     38  (if nastura
     39      (lambda (ignore-nunvalsi)
     40        (lambda () (make-javni-valsi cmene secuxna-nastura)))
     41      (if cmene
     42          (lambda (nunvalsi)
     43            (vejmina-nunvalsi cmene nunvalsi))
     44          (lambda (nunvalsi)
     45            (vejmina-nunvalsi-nacmene nunvalsi)))))
    3246
    3347(define (vejmina-nunvalsi cmene nunvalsi)
     
    4155;; merge multiple nunvalsi with or without a cmene
    4256;;
    43 (define (venunjmina-rodanunvalsi cmene)
    44   (if cmene
    45       (lambda (rodanunvalsi)
    46         (apply vejmina-rodanunvalsi cmene rodanunvalsi))
    47       (lambda (rodanunvalsi)
    48         (apply vejmina-rodanunvalsi-nacmene rodanunvalsi))))
     57(define (venunjmina-rodanunvalsi cmene nastura)
     58  (if nastura
     59      (lambda (ignore-rodanunvalsi)
     60        (lambda () (make-javni-valsi cmene secuxna-nastura)))
     61      (if cmene
     62          (lambda (rodanunvalsi)
     63            (apply vejmina-rodanunvalsi cmene rodanunvalsi))
     64          (lambda (rodanunvalsi)
     65            (apply vejmina-rodanunvalsi-nacmene rodanunvalsi)))))
    4966
    5067
  • release/4/genturfahi/trunk/samselpla.scm

    r21887 r21888  
    5959;; just return the header code and grammar.
    6060;;
    61 (define (samselpla-cfari #!key gerna)
     61(define (samselpla-cfari samselpla #!key gerna)
    6262  (call-with-values
    6363    (lambda () (unzip2 gerna))
     
    161161                           (car rodajavni)
    162162                           `(morji-nunjavni-je ,@rodajavni))))
    163     (if (equal? "" samselpla)
     163    (if (string=? "" samselpla)
    164164        javni
    165165        `(morji-nunjavni-samselpla ,(string->symbol samselpla) ,javni))))
    166166
     167(define (samselpla-nastura-javni #!key javni)
     168  (if (symbol? javni)
     169      ; if we have a non-terminal, we must use |morji-nunjavni-quote|.
     170      ;
     171      `(morji-nunjavni-nastura ,javni)
     172      `(,@javni nastura: #t)))
     173
    167174(define (samselpla-pajavni-cmene #!key cmene javni)
    168   (if (equal? "" cmene)
     175  (if (string=? "" cmene)
    169176      javni
    170177      (if (symbol? javni)
    171           `(morji-nunjavni-cmene ,javni cmene: ,cmene)
     178          ; if we have a non-terminal, we must use |morji-nunjavni-cmene|.
     179          ;
     180          `(morji-nunjavni-cmene ,javni
     181                                 cmene: ,cmene)
    172182          `(,@javni cmene: ,cmene))))
    173 
    174 (define (samselpla-jonai-je #!key je)
    175   je)
    176183
    177184(define (samselpla-jonai #!key cfari fanmo)
     
    181188  (let ((empty-string (secuxna-empty-string)))
    182189    `(morji-nunjavni-? ,javni
    183                        ,@(if (equal? "" cmene)
     190                       ,@(if (string=? "" cmene)
    184191                             '()
    185192                             `(cmene: ,cmene))
    186                        ,@(if (equal? "" empty-string)
     193                       ,@(if (string=? "" empty-string)
    187194                             '()
    188195                             `(empty-string: ,empty-string)))))
    189196
    190197(define (samselpla-* #!key cmene javni)
    191   `(morji-nunjavni-* ,javni ,@(if (equal? "" cmene) '() `(cmene: ,cmene))))
     198  `(morji-nunjavni-* ,javni ,@(if (string=? "" cmene) '() `(cmene: ,cmene))))
    192199
    193200(define (samselpla-+ #!key cmene javni)
    194   `(morji-nunjavni-+ ,javni ,@(if (equal? "" cmene) '() `(cmene: ,cmene))))
     201  `(morji-nunjavni-+ ,javni ,@(if (string=? "" cmene) '() `(cmene: ,cmene))))
    195202
    196203(define (samselpla-& #!key javni)
     
    214221  (samselpla-cmene->symbol naselci))
    215222
     223(define (samselpla-stura-lerfu-selci #!key lerfu)
     224  `(morji-nunjavni-lerfu ,lerfu nastura: #f))
     225
    216226(define (samselpla-lerfu-selci #!key lerfu)
    217227  `(morji-nunjavni-lerfu ,lerfu))
     
    232242  #\tab)
    233243
     244(define (samselpla-stura-valsi-selci #!key valsi-lerfu)
     245  `(morji-nunjavni-valsi ,(apply string-append valsi-lerfu) nastura: #f))
     246
    234247(define (samselpla-valsi-selci #!key valsi-lerfu)
    235248  `(morji-nunjavni-valsi ,(apply string-append valsi-lerfu)))
    236 
    237 (define (samselpla-valsi-selci-lerfu #!key lerfu)
    238   lerfu)
    239249
    240250(define (samselpla-valsi-newline)
     
    382392  `(morji-nunjavni-.))
    383393
    384 (define (samselpla-samselpla #!key samselpla)
    385   samselpla)
    386 
    387394(define (samselpla-samselpla-xadni #!key rodalerfu)
    388395  (apply string rodalerfu))
     
    391398  (string-append (make-string 1 cfari) fanmo))
    392399
    393 (define (samselpla-samselpla-lerfu #!key lerfu)
    394   lerfu)
    395 
    396 (define (samselpla-girzu-javni #!key javni)
    397   javni)
    398 
    399400(define (samselpla-empty-string)
    400401  (let ((empty-string (secuxna-empty-string)))
    401     `(morji-nunjavni-e ,@(if (equal? "" empty-string)
     402    `(morji-nunjavni-e ,@(if (string=? "" empty-string)
    402403                             '()
    403404                             `(empty-string: ,empty-string)))))
    404 
    405 ;; ignore comments and space
    406 ;;
    407 (define (samselpla-canlu)
    408   '())
  • release/4/genturfahi/trunk/secuxna.scm

    r21850 r21888  
    5050;; it will affect the runtime parser.
    5151;;
    52 (define secuxna-sesumti          (gensym "sesumti-"))
     52(define secuxna-nastura          (gensym "nastura-"))
  • release/4/genturfahi/trunk/tests/and-predicate.scm

    r21847 r21888  
    3737  ; the input or return the parse result.
    3838  ;
    39   (test `(,secuxna-sesumti "a") (genturfahi-and-predicate "a"))
     39  (test '(() "a") (genturfahi-and-predicate "a"))
    4040
    4141  ; It behaves like all other rules when there is no match,
     
    5757  ; only one.
    5858  ;
    59   (test `(,secuxna-sesumti "aa") (genturfahi-and-predicate "aa"))
    60   (test `(,secuxna-sesumti "ab") (genturfahi-and-predicate "ab"))
    61   (test `(,secuxna-sesumti "ac") (genturfahi-and-predicate "ac"))
     59  (test '(() "aa") (genturfahi-and-predicate "aa"))
     60  (test '(() "ab") (genturfahi-and-predicate "ab"))
     61  (test '(() "ac") (genturfahi-and-predicate "ac"))
    6262
    6363  ; later characters that would match
  • release/4/genturfahi/trunk/tests/je.peg

    r21635 r21888  
    1818;;;;
    1919
    20 je <- #\a #\b #\c
     20je <- ,#\a ,#\b ,#\c
  • release/4/genturfahi/trunk/tests/je.scm

    r21571 r21888  
    2121;;; ordered sequence: e_1 e_2
    2222;;;
    23 ;;; je <- #\a #\b #\c
     23;;; je <- ,#\a ,#\b ,#\c
    2424;;;
    2525(define (je)
    2626  (let ((genturfahi-je
    27     (genturfahi* (nunjavni-je (nunjavni-lerfu #\a)
    28                               (nunjavni-lerfu #\b)
    29                               (nunjavni-lerfu #\c)))))
     27    (genturfahi* (nunjavni-je (nunjavni-lerfu #\a nastura: #f)
     28                              (nunjavni-lerfu #\b nastura: #f)
     29                              (nunjavni-lerfu #\c nastura: #f)))))
    3030    (je-test genturfahi-je)))
    3131
  • release/4/genturfahi/trunk/tests/jonai-naselci.peg

    r21847 r21888  
    1919
    2020jonai <- a / b / c
    21 a     <- !#\e !#\i !#\o !#\u #\a
    22 b     <- &#\b #\b
    23 c     <- &#\c #\c
     21a     <- !#\e !#\i !#\o !#\u ,#\a
     22b     <- &#\b ,#\b
     23c     <- &#\c ,#\c
  • release/4/genturfahi/trunk/tests/jonai-naselci.scm

    r21847 r21888  
    2424;;;
    2525;;; jonai <- a / b / c
    26 ;;; a     <- !#\e !#\i !#\o !#\u #\a
    27 ;;; b     <- &#\b #\b
    28 ;;; c     <- &#\c #\c
     26;;; a     <- !#\e !#\i !#\o !#\u ,#\a
     27;;; b     <- &#\b ,#\b
     28;;; c     <- &#\c ,#\c
    2929;;;
    3030(define (jonai-naselci)
     
    4444                    (nunjavni-! (nunjavni-lerfu #\o))
    4545                    (nunjavni-! (nunjavni-lerfu #\u))
    46                     (nunjavni-lerfu #\a))))
     46                    (nunjavni-lerfu #\a nastura: #f))))
    4747             (b (nunjavni-morji
    4848                  (nunjavni-je
    4949                    (nunjavni-& (nunjavni-lerfu #\b))
    50                     (nunjavni-lerfu #\b))))
     50                    (nunjavni-lerfu #\b nastura: #f))))
    5151             (c (nunjavni-morji
    5252                  (nunjavni-je
    5353                    (nunjavni-& (nunjavni-lerfu #\c))
    54                     (nunjavni-lerfu #\c)))))
     54                    (nunjavni-lerfu #\c nastura: #f)))))
    5555      (genturfahi* gerna))))
    5656    (jonai-naselci-test genturfahi-jonai-naselci)))
  • release/4/genturfahi/trunk/tests/jonai.peg

    r21635 r21888  
    1818;;;;
    1919
    20 jonai <- #\a / #\b / #\c
     20jonai <- ,#\a / ,#\b / ,#\c
  • release/4/genturfahi/trunk/tests/jonai.scm

    r21571 r21888  
    2121;;; ordered-choice: e_1 / e_2
    2222;;;
    23 ;;; jonai <- #\a / #\b / #\c
     23;;; jonai <- ,#\a / ,#\b / ,#\c
    2424;;;
    2525(define (jonai)
    2626  (let ((genturfahi-jonai
    27     (genturfahi* (nunjavni-jonai (nunjavni-lerfu #\a)
    28                                  (nunjavni-lerfu #\b)
    29                                  (nunjavni-lerfu #\c)))))
     27    (genturfahi* (nunjavni-jonai (nunjavni-lerfu #\a nastura: #f)
     28                                 (nunjavni-lerfu #\b nastura: #f)
     29                                 (nunjavni-lerfu #\c nastura: #f)))))
    3030    (jonai-test genturfahi-jonai)))
    3131
  • release/4/genturfahi/trunk/tests/lerfu-klesi.peg

    r21887 r21888  
    1818;;;;
    1919
    20 gerna <- #:gerna (digit / alpha)* FAhO -> test-samselpla-lerfu-klesi
     20gerna <- #:gerna (digit / alpha)* 'FAhO -> test-samselpla-lerfu-klesi
    2121digit <- [[:digit:]]+
    2222alpha <- [[:alpha:]]+
  • release/4/genturfahi/trunk/tests/lerfu-klesi.scm

    r21711 r21888  
    2121;;; character classes:
    2222;;;
    23 ;;; gerna <- (digit / alpha)* FAhO
     23;;; gerna <- (digit / alpha)* 'FAhO
    2424;;; digit <- [:digit:]+
    2525;;; alpha <- [:alpha:]+
     
    4343                          (alpha porsi mapti namapti)))
    4444                      cmene: "gerna")
    45                     (nunjavni-fanmo)))))
     45                    (nunjavni-nastura
     46                      (lambda (porsi mapti namapti)
     47                        (FAhO porsi mapti namapti)))))))
    4648       (digit (nunjavni-morji
    4749                (nunjavni-char-set-+ char-set:digit)))
  • release/4/genturfahi/trunk/tests/lerfu.peg

    r21635 r21888  
    1818;;;;
    1919
    20 lerfu <- #\a
     20lerfu <- ,#\a
  • release/4/genturfahi/trunk/tests/lerfu.scm

    r21571 r21888  
    2121;;; terminal:
    2222;;;
    23 ;;; lerfu <- #\a
     23;;; lerfu <- ,#\a
    2424;;;
    2525(define (lerfu)
    26   (let ((genturfahi-lerfu (genturfahi* (nunjavni-lerfu #\a))))
     26  (let ((genturfahi-lerfu (genturfahi* (nunjavni-lerfu #\a nastura: #f))))
    2727    (lerfu-test genturfahi-lerfu)))
    2828
  • release/4/genturfahi/trunk/tests/not-predicate.scm

    r21847 r21888  
    3939  ; on match, we return the empty list.
    4040  ;
    41   (test '(#f "a")               (genturfahi-not-predicate "a"))
    42   (test `(,secuxna-sesumti "b") (genturfahi-not-predicate "b"))
    43   (test `(,secuxna-sesumti "c") (genturfahi-not-predicate "c"))
     41  (test '(#f "a") (genturfahi-not-predicate "a"))
     42  (test '(() "b") (genturfahi-not-predicate "b"))
     43  (test '(() "c") (genturfahi-not-predicate "c"))
    4444
    4545  ; we match the empty string (because the empty string
    4646  ; isn't #\a.)
    4747  ;
    48   (test `(,secuxna-sesumti "") (genturfahi-not-predicate ""))
     48  (test '(() "") (genturfahi-not-predicate ""))
    4949
    5050  ; there is no rule for the end-of-file
    5151  ; These don't parse the whole buffer!
    5252  ;
    53   (test '(#f "aa")               (genturfahi-not-predicate "aa"))
    54   (test '(#f "ab")               (genturfahi-not-predicate "ab"))
    55   (test '(#f "ac")               (genturfahi-not-predicate "ac"))
    56   (test `(,secuxna-sesumti "ba") (genturfahi-not-predicate "ba"))
    57   (test `(,secuxna-sesumti "bb") (genturfahi-not-predicate "bb"))
    58   (test `(,secuxna-sesumti "bc") (genturfahi-not-predicate "bc"))
    59   (test `(,secuxna-sesumti "ca") (genturfahi-not-predicate "ca"))
    60   (test `(,secuxna-sesumti "cb") (genturfahi-not-predicate "cb"))
    61   (test `(,secuxna-sesumti "cc") (genturfahi-not-predicate "cc"))
     53  (test '(#f "aa") (genturfahi-not-predicate "aa"))
     54  (test '(#f "ab") (genturfahi-not-predicate "ab"))
     55  (test '(#f "ac") (genturfahi-not-predicate "ac"))
     56  (test '(() "ba") (genturfahi-not-predicate "ba"))
     57  (test '(() "bb") (genturfahi-not-predicate "bb"))
     58  (test '(() "bc") (genturfahi-not-predicate "bc"))
     59  (test '(() "ca") (genturfahi-not-predicate "ca"))
     60  (test '(() "cb") (genturfahi-not-predicate "cb"))
     61  (test '(() "cc") (genturfahi-not-predicate "cc"))
    6262  0)
    6363
  • release/4/genturfahi/trunk/tests/one-or-more.peg

    r21635 r21888  
    1818;;;;
    1919
    20 one-or-more <- #\a+
     20one-or-more <- ,#\a+
  • release/4/genturfahi/trunk/tests/one-or-more.scm

    r21571 r21888  
    2121;;; one-or-more: e+
    2222;;;
    23 ;;; one-or-more <- #\a+
     23;;; one-or-more <- ,#\a+
    2424;;;
    2525(define (one-or-more)
    2626  (let ((genturfahi-one-or-more
    27     (genturfahi* (nunjavni-+ (nunjavni-lerfu #\a)))))
     27    (genturfahi* (nunjavni-+ (nunjavni-lerfu #\a nastura: #f)))))
    2828    (one-or-more-test genturfahi-one-or-more)))
    2929
  • release/4/genturfahi/trunk/tests/optional.peg

    r21635 r21888  
    1818;;;;
    1919
    20 optional <- #\a?
     20optional <- ,#\a?
  • release/4/genturfahi/trunk/tests/optional.scm

    r21571 r21888  
    2121;;; optional: e?
    2222;;;
    23 ;;; optional <- #\a?
     23;;; optional <- ,#\a?
    2424;;;
    2525(define (optional?)
    2626  (let ((genturfahi-optional
    27     (genturfahi* (nunjavni-? (nunjavni-lerfu #\a)))))
     27    (genturfahi* (nunjavni-? (nunjavni-lerfu #\a nastura: #f)))))
    2828  (optional?-test genturfahi-optional)))
    2929
  • release/4/genturfahi/trunk/tests/samselpla.peg

    r21887 r21888  
    1818;;;;
    1919
    20 gerna <- #:a a #:b b #:c c -> test-samselpla-samselpla
    21 a     <- #:lerfu #\a       -> test-samselpla-lerfu
    22 b     <- #:lerfu #\b       -> test-samselpla-lerfu
    23 c     <- #:lerfu #\c       -> test-samselpla-lerfu
     20; test #!key args with positional args
     21;
     22gerna <- #:a a
     23         b
     24         #:c c -> test-samselpla-samselpla
     25
     26; test positional args
     27;
     28a     <- ,#\a  -> test-samselpla-lerfu
     29b     <- ,"b"  -> test-samselpla-valsi
     30c     <- [c]   -> test-samselpla-lerfu
  • release/4/genturfahi/trunk/tests/samselpla.scm

    r21707 r21888  
    2222;;;
    2323;;; gerna <- a b c
    24 ;;; a     <- #\a
    25 ;;; b     <- #\b
    26 ;;; c     <- #\c
     24;;; a     <- ,#\a
     25;;; b     <- ,"b"
     26;;; c     <- [c]
    2727;;;
    28 (define (test-samselpla-samselpla #!key a b c)
     28(define (test-samselpla-samselpla b #!key a c)
    2929  (string-append a b c))
    3030
    31 (define (test-samselpla-lerfu #!key lerfu)
     31(define (test-samselpla-valsi valsi)
     32  valsi)
     33
     34(define (test-samselpla-lerfu lerfu)
    3235  (make-string 1 lerfu))
    3336
     
    4447                   (nunjavni-cmene
    4548                     (lambda (porsi mapti namapti)
    46                        (b porsi mapti namapti))
    47                      cmene: "b")
     49                       (b porsi mapti namapti)))
    4850                   (nunjavni-cmene
    4951                     (lambda (porsi mapti namapti)
     
    5355               ; convert each character to a string.
    5456               (nunjavni-samselpla test-samselpla-lerfu
    55                  (nunjavni-lerfu #\a cmene: "lerfu"))))
     57                 (nunjavni-lerfu #\a nastura: #f))))
    5658             (b (nunjavni-morji
    57                (nunjavni-samselpla test-samselpla-lerfu
    58                  (nunjavni-lerfu #\b cmene: "lerfu"))))
     59               (nunjavni-samselpla test-samselpla-valsi
     60                 (nunjavni-valsi "b" nastura: #f))))
    5961             (c (nunjavni-morji
    6062               (nunjavni-samselpla test-samselpla-lerfu
    61                  (nunjavni-lerfu #\c cmene: "lerfu")))))
     63                 (nunjavni-char-set (char-set #\c))))))
    6264      (genturfahi* gerna))))
    6365    (samselpla-test genturfahi-samselpla)))
  • release/4/genturfahi/trunk/tests/valsi.peg

    r21635 r21888  
    1818;;;;
    1919
    20 valsi <- "abc"
     20valsi <- ,"abc"
  • release/4/genturfahi/trunk/tests/valsi.scm

    r21571 r21888  
    2121;;; terminal:
    2222;;;
    23 ;;; valsi <- "abc"
     23;;; valsi <- ,"abc"
    2424;;;
    2525(define (valsi)
    26   (let ((genturfahi-valsi (genturfahi* (nunjavni-valsi "abc"))))
     26  (let ((genturfahi-valsi (genturfahi* (nunjavni-valsi "abc" nastura: #f))))
    2727    (valsi-test genturfahi-valsi)))
    2828
  • release/4/genturfahi/trunk/tests/zero-or-more.peg

    r21635 r21888  
    1818;;;;
    1919
    20 zero-or-more <- #\a*
     20zero-or-more <- ,#\a*
  • release/4/genturfahi/trunk/tests/zero-or-more.scm

    r21571 r21888  
    2121;;; zero-or-more: e*
    2222;;;
    23 ;;; zero-or-more <- #\a*
     23;;; zero-or-more <- ,#\a*
    2424;;;
    2525(define (zero-or-more)
    2626  (let ((genturfahi-zero-or-more
    27     (genturfahi* (nunjavni-* (nunjavni-lerfu #\a)))))
     27    (genturfahi* (nunjavni-* (nunjavni-lerfu #\a nastura: #f)))))
    2828    (zero-or-more-test genturfahi-zero-or-more)))
    2929
Note: See TracChangeset for help on using the changeset viewer.