My favorites | Sign in
Project Home Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
DeArticle  
outputs correct form of definite or indefinite article
agreement, case, gender, generation, German, module, number
Updated Mar 12, 2013 by mentific...@gmail.com

AskUser EnArticle ParaMeter

Calling by parameter

When a search-loop is trying to find a German noun, such as the direct object of a query in AskUser, it makes sense to call DeArticle from the same nested depth of the search which is using each ParaMeter to find the German noun. When the search reveals the case and number of the noun being found, these parameters can be passed along with a call to DeArticle. Since a "LEAVE" statement terminates the loop, there will not be mulitple calls to DeArticle resulting in a kind of stuttering in German.

Code from German DeKi.txt

:  DeArticle ( select "EIN" or "DER" before a noun; 3feb2013 )
\ CR ." DeArt: subjnum indefartcon defartcon = " \ test 3mar2013
\ subjnum @ . indefartcon @ . defartcon @ .  \ test; 3mar2013
  indefmust @ 1 = IF  \ if required to say "A(N)"; 20oct2011
    midway @  t @  DO  \ search backwards in time; 20oct2011
      I       0 de{ @  101 = IF  \ 101=A found?  8nov2012
        I     8 de{ @  aud !  \ save auditory recall-vector
        LEAVE  \ one instance is enough; 20oct2011
      THEN  \ end of test for "101=A" engram; 8nov2012
    -1 +LOOP  \ end of backwards loop; 20oct2011
    SpeechAct  \ pronounce the requred article; 20oct2011
    0 indefmust !  \ reset for safety; 20oct2011
    EXIT  \ abandon rest of DeArticle; 20oct2011; 17nov2012
  THEN  \ end of test for a required "A(N); 20oct2011
  nphrpos @ 7 = NOT IF
    quobjnum @ 1 = IF   \  4feb2012
      1 nphrnum !  \  4feb2012
      1 indefartcon !  \ 4feb2012
    \ 0  quobjnum !  \ reset after use;  4feb2012
    \ 0  quobjnum !  \ Commenting out on 4mar2013
    THEN  \  4feb2012
    nphrnum @  1 = IF
      motjuste @ ghost @ = IF  \
        0 indefartcon !  \ do not say "A"; 15oct2011
        1 defartcon !    \ say "THE"; 15oct2011
      THEN  \
      motjuste @ ghost @ = NOT IF
        subjnum @ 1 = IF  \ if singular subject; 13sep2011
          verbpsi @ 800 = IF  \ AM or IS; 10nov0212
            1 indefartcon !  \ indefinite article; 13sep2011
          THEN  \ end of test for "AM" or "IS"; 13sep2011
        THEN  \ 13sep2011
        indefartcon @  1 = IF  \ from WHAT-query; 16apr2011
          0 defartcon !  \ avoid "A THE"; 6oct2011
          anset @ 0 = IF ( If no vowel is next )
            midway @  t @  DO
              I       0 de{ @ 101 = IF  \ 101=A? 8nov2012
                I     8 de{ @  aud !  \ 10nov2012
                LEAVE
              THEN
            -1 +LOOP
          THEN  ( End of test for absence of a vowel )
          anset @ 0 > IF  ( If anset-flag is positive )
            midway @  t @  DO
              I       0 de{ @ 102 = IF  \ 102=AN? 8nov2012
                I     8 de{ @  aud !  \ 10nov2012
                LEAVE
              THEN
            -1 +LOOP
          THEN  ( End of test for a vowel coming next )
          1 numflag ! \ With "A" assume singular number.
          SpeechAct
          0 indefartcon !  \ Reset; 16apr2011
        THEN  \ End of test for positive indefartcon; 16apr2011
        0 indefartcon !  \ Reset for safety; 6oct2011
      THEN
      motjuste @ ghost @ = IF
       defartcon @  1 = IF  \ from WH0-query; 16apr2011
        midway @  t @  DO
          I       0 de{ @ 117 = IF  \ If 117=THE found; 10nov2012
            I     2 de{ @ quobjnum @ = IF  \ number?  4mar2013
              I   4 de{ @ dbacon @ = IF  \ acc. dba?  4mar2013
                I 8 de{ @  aud !  \ auditory engram 4mar2012
              THEN  \ end of dba-test;  4mar2013
              LEAVE  \ one engram suffices;  5mar2013
            THEN  \ end of number-test;  4mar2012
          THEN
        -1 +LOOP
        SpeechAct
        0 defartcon !  \ Reset; 16apr2011
       THEN  \ End of test for positive defartcon; 16apr2011
      THEN
    THEN
  THEN
  dirobj @ 1 = IF
    motjuste @ ghost !
  THEN   ( http://thebeez.home.xs4all.nl/4tH )
  0 whoflag !  \ call DeArticle only once; 17nov2012
; ( http://code.google.com/p/mindforth/wiki/EnArticle )
Powered by Google Project Hosting