Skip to content

Commit

Permalink
loglan page updates
Browse files Browse the repository at this point in the history
  • Loading branch information
Randall-Holmes committed Jan 4, 2025
1 parent cd94d01 commit de7df12
Show file tree
Hide file tree
Showing 79 changed files with 39,186 additions and 9,175 deletions.
Binary file modified Loglan/Reports/reference_grammar_proposed.pdf
Binary file not shown.
15 changes: 10 additions & 5 deletions Loglan/Reports/reference_grammar_proposed.tex
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

\author{M. Randall Holmes}

\date{12/29/2024, 11 am Boise time}
\date{1/3/2025, 11 am Boise time}

\begin{document}

Expand Down Expand Up @@ -43,6 +43,9 @@ \subsection{Version notes}

\begin{description}

\item[1/3/2025:] A final refinement to the left boundary fix. Added a new species of whitespace: \verb|~| is a word break, it must be followed by a consonant, and it is never expressed as a pause. This makes it suitable
to connect words in the pause free block after a name marker.

\item[12/29/2024:] New fix to the left boundary of names problem. The first whitespace after a name marker which is not immediately after the name marker must be a phonetically mandatory pause. This replaces a highly nonlocal rule which made for mysterious parsing bugs. It also actively enforces the style guide that one should pause after a predicate name just as after a standard name, even in the absence of a remote name that could eat things up.

\item[11/29/2024, further corrected 11/30:] The use of {\bf gio} is now optional. {\bf hue} followed by an argument followed by a subject initial statement or a proper gasent with deferred arguments will now be parsed as an inverse vocative of the argument, followed by the subject-initial statement or proper gasent. This appears to be a good solution to the problem which caused {\bf gio} to be introduced in the first place, and allows the quite valid objections to mandatory {\bf gio} by poets to be taken into account.
Expand Down Expand Up @@ -407,13 +410,15 @@ \subsection{Pauses and word boundaries}

A comma in Loglan marks an explicit pause (and is followed by whitespace; the close comma used to indicate unusual syllable breaks between vowels in earlier versions of Loglan is replaced by the hyphen which we use to represent syllable breaks in general).

Whitespace is sometimes an explicit pause and sometimes a word boundary which is not marked by any actual phonetic feature. Where whitespace does not appear, one should not pause. Where a pause is allowed at whitespace, a comma should always be permitted (The old parser LIP does not always support this, but we regard this as debugging, not a novelty). There are situations where whitespace is allowed due to a word break but an actual comma pause would change the parse (and so in speech such a whitespace is not expressible as a pause).\footnote{There are such instances of whitespace which are permitted to be written but cannot represent a pause, in connection with the handling of the legacy forms of the APA connectives.}
The special character \verb|~| (called ``tilde") acts as an alternative word break. It must be followed by a consonant, it cannot be expressed as a pause, and it does have the effect of ending a word.

Whitespace is sometimes an explicit pause and sometimes a word boundary which is not marked by any actual phonetic feature. Where whitespace does not appear, one should not pause. Where a pause is allowed at whitespace, a comma should always be permitted (The old parser LIP does not always support this, but we regard this as debugging, not a novelty). There are situations where whitespace is allowed due to a word break but an actual comma pause would change the parse (and so in speech such a whitespace is not expressible as a pause).\footnote{There are such instances of whitespace which are permitted to be written but cannot represent a pause, in connection with the handling of the legacy forms of the APA connectives. I should look into whether the tilde can be used in these contexts; it would make more sense.}

Vowel initial words are always preceded by a pause if they are not at the start of a text or utterance. Consonant final words are always followed by a pause if they are not at the end of a text or utterance. Thus, whitespace preceded by a consonant or whitespace followed by a vowel must represent an actual pause. So we also regard whitespace preceded by consonants or followed by vowels
as an explicit pause. It appears to be NEW that we must pause before the first in a stream of VV words, but it is also clearly necessary, as experiments with phonetic transcripts have revealed.\footnote{The new PEG implementation supports the traditional requirements
as an explicit pause. It appears to be a new observation not attested before 2013 that we must pause before the first in a stream of VV words, but it is also clearly necessary, as experiments with phonetic transcripts have revealed.\footnote{The new PEG implementation supports the traditional requirements
that pauses at the end of a serial name and pauses before a logical connective must be actual comma pauses. Some logical connectives are consonant-initial: there is a purely phonetic description of the front of a logical connective in the PEG.}

We note the subtle point that the end of a predicate word may have to be indicated by whitespace if the stressed syllable is not explicitly marked. So in this case whitespace may have no local phonetic meaning but will have the definite phonetic effect of signalling the presence of an earlier stressed syllable. In phonetic transcripts, where whitespace not representing pauses is suppressed, the stresses in predicate words must usually be marked explicitly.
We note the subtle point that the end of a predicate word may have to be indicated by whitespace or tilde if the stressed syllable is not explicitly marked. So in this case the whitespace or tilde may have no local phonetic meaning but will have the definite phonetic effect of signalling the presence of an earlier stressed syllable. In phonetic transcripts, where whitespace not representing pauses is suppressed, the stresses in predicate words must usually be marked explicitly.

There are special conventions associated with the cmapua {\bf ci}: whitespace following it should not be expressed as a pause unless the following word is vowel-initial (in which case phonetics demands a pause) or the following word is a Loglan name word (in which case a pause is required, though only whitespace may appear). This has to do with the fact that {\bf ci} is a name marker, but only when it is followed by a pause; this stipulation guards many occurrences of {\bf ci} which have nothing to do with names from having to follow the phonetic rules for name markers.

Expand Down Expand Up @@ -473,7 +478,7 @@ \subsection{Name words and the false name marker problem}
There are uses of name markers in which they are not followed immediately by name words: the rule governing these (which also applies to the normal uses of name marker words) is that the first whitespace after, but not immediately after, a name marker word must be a phonetically mandatory pause: comma marked, or following a consonant, or preceding a vowel.

An example: in {\bf hoi le farfu je la Rabrrt}, which is bad, it is legal but odd to amend it to {\bf hoi le, farfu je la Rabbrt}, most natural to amend it to {\bf hoi le-farfu, je la Rabrrt} [the whitespace after {\bf le} is here replaced with a syllable break to make it clear that one does not pause], and a sign of last minute panic to amend it to {\bf hoi le farfu je la, Rabrrt}, which in fact would not parse as written and would have to be written
{\bf hoi le-far'fu-je-la, Rabrrt}, explicitly showing that the pause is delayed. It is worth noting that {\bf hoi la, Djan} and {\bf hue la, Djan} actually unavoidably require the pauses shown to avoid the risk of referring to {\bf Ladjan}. Some speakers have noted that this rule may encourage a style in writing which would not usually be followed in speech: {\bf hoi le, farfu je la Rabbrt} might be preferred in writing because it is orthographically simpler. In compound predicate names, this is likely to encourage use of stresses: {\bf Mi vizka le Caslo Monca vu} is bad, could be amended to {\bf Mi vizka le Caslo, Monca vu} or {\bf Mi vizka le Caslo, Monca, vu} for orthographic ease, but in speech would probably be {\bf Mi vizka le Cas'lo-Monca, vu}. In the text of the Visit, I have followed the latter style.
{\bf hoi le-far'fu-je-la, Rabrrt}, explicitly showing that the pause is delayed. It is worth noting that {\bf hoi la, Djan} and {\bf hue la, Djan} actually unavoidably require the pauses shown to avoid the risk of referring to {\bf Ladjan}. Some speakers have noted that this rule may encourage a style in writing which would not usually be followed in speech: {\bf hoi le, farfu je la Rabbrt} might be preferred in writing because it is orthographically simpler. In compound predicate names, this might encourage use of stresses: {\bf Mi vizka la Caslo Monca vu} is bad, could be amended to {\bf Mi vizka le Caslo, Monca vu} or {\bf Mi vizka le Caslo, Monca, vu} for orthographic ease, but in speech would probably be {\bf Mi vizka le Cas'lo-Monca, vu}. A less laborious style for writing these sentences is made possible by the tilde word break [which was introduced exactly for this purpose]: {\bf hoi le\verb|~|farfu\verb|~|je\verb|~|la, Rabrrt} and {\bf Mi vizka la Caslo\verb|~|Monca, vu}. In the text of the Visit, I have followed the last style.

The rule that false name markers cannot occur in names was long ago abandoned (in the 1990s) by TLI Loglan. Precise definition of what you do with false name markers was hard to think about before phonetic parsing was available. The requirement that names resolve into syllables is new since 2013 (I seem to recall that Lojban does something like this), and interacts with the definition of a false name marker as indicated above. This set of rules manages the left boundary of names problem adequately; in Lojban I believe this is managed by requiring that name words be bounded on the left by a pause; it is nice to see that JCB's original concept
has a fairly simple implementation (which has arrived at its present form (2024) only after considerable reflection).
Expand Down
60 changes: 39 additions & 21 deletions Loglan/Sources/draft-grammar-with-comments.peg
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@

<p>

<LI> 1/1/2024: The rule for left boundary defense of names is now that after any name marker the orthography must show exactly where the next actual pause is. This is supported by addition of ~ (tilde), an allophone of whitespace (so it ends words) which must be followed immediately by a consonant and which is not expressed as a pause: this makes it easy to indicate blocks of words to be pronounced without a break. Also cleaned up uses of [,] in favor of named comma classes. There may be more of this to do.

<LI> 11/30/2024: refinement of the correction of the 29th.

<LI> 11/29/2024: Use of <B>gio</B> is now optional, except in statements to be converted by <B>hue</B> into inverse vocatives.
Expand Down Expand Up @@ -796,7 +798,15 @@

<p>

sp <- [ ]+
sp <- ([ ]+/[~] &Co1)

<p>

sp2 <- [ ]+

<p>

Tilde <- [~] &Co1

<H4>Vowels</H4>

Expand Down Expand Up @@ -954,7 +964,11 @@ Character <- (Letter/Juncture)

<p>

AlienText <- (([,]? sp [\"] (![\"] .)+ [\"])/([,]? sp (![, ] !Terminal .)+ ([,]? sp [Yy] [,]? sp (![, ] !Terminal .)+)*))
Comma0 <- [,]? sp2

<p>

AlienText <- ((Comma0 [\"] (![\"] .)+ [\"])/(Comma0 (!Comma0 !Terminal .)+ (Comma0 [Yy] Comma0 (!Comma0 !Terminal .)+)*))

<LI> adding wrapper classes for alien text markers

Expand Down Expand Up @@ -988,15 +1002,15 @@ SUEalien <- ([Ss] [Uu] Juncture? [Ee])

<p>

AlienWord <- (&caprule ((HOIalien Juncture? &([,]? sp [\"]))/(HUEalien Juncture? &([,]? sp [\"]))/(LIEalien Juncture?)/(LAOalien Juncture?)/(LIOalien Juncture?)/(SAOalien Juncture?)/(SUEalien Juncture?)) AlienText)
AlienWord <- (&caprule ((HOIalien Juncture? &(Comma0 [\"]))/(HUEalien Juncture? &(Comma0 [\"]))/(LIEalien Juncture?)/(LAOalien Juncture?)/(LIOalien Juncture?)/(SAOalien Juncture?)/(SUEalien Juncture?)) AlienText)

<p>

<LI>while reading streams of cmapua, the parser will watch for the markers of alien text.

<p>

Alienmarker <- ((([Hh] [Oo] [Ii] Juncture? &([,]? sp [\"]))/([Hh] [Uu] Juncture? [Ee] Juncture? &([,]? sp [\"]))/([Ll] [Ii] Juncture? [Ee] Juncture?)/([Ll] [Aa] [Oo] Juncture?)/([Ll] [Ii] Juncture? [Oo] Juncture?)/([Ss] [Aa] [Oo] Juncture?)/([Ss] [Uu] Juncture? [Ee] Juncture?)) !Vo1)
Alienmarker <- ((([Hh] [Oo] [Ii] Juncture? &( [\"]))/([Hh] [Uu] Juncture? [Ee] Juncture? &(Comma0 [\"]))/([Ll] [Ii] Juncture? [Ee] Juncture?)/([Ll] [Aa] [Oo] Juncture?)/([Ll] [Ii] Juncture? [Oo] Juncture?)/([Ss] [Aa] [Oo] Juncture?)/([Ss] [Uu] Juncture? [Ee] Juncture?)) !Vo1)

<p>

Expand Down Expand Up @@ -1294,7 +1308,7 @@ StressedSyllable <- ((SyllableA/SyllableB) Stress2)

<p>

NameEndSyllable <- (InitialConsonants? (Syllabic/(Vocalic &FinalConsonant)) FinalConsonant? FinalConsonant? Stress? !Letter)
NameEndSyllable <- (InitialConsonants? (Syllabic/(Vocalic &FinalConsonant)) FinalConsonant? FinalConsonant? Stress? !Tilde !Letter)

<p>

Expand All @@ -1308,15 +1322,15 @@ NameEndSyllable <- (InitialConsonants? (Syllabic/(Vocalic &FinalConsonant)) Fina

<p>

Maybepause <- (Vo1 Stress2? sp Co1)
Maybepause <- (Vo1 Stress2? sp2 Co1)

<p>

<LI>explicit pauses: these are whitespace before a vowel or after a consonant, or comma marked pauses.

<p>

Explicitpause <- ((Co1 Stress2? sp &Letter)/(Letter Stress2? sp &Vo1)/(Letter Stress2? [,] sp &Letter))
Explicitpause <- ((Co1 Stress2? sp2 &Letter)/(Letter Stress2? sp2 &Vo1)/(Letter Stress2? [,] sp2 &Letter))

<p>

Expand All @@ -1328,7 +1342,7 @@ Explicitpause <- ((Co1 Stress2? sp &Letter)/(Letter Stress2? sp &Vo1)/(Letter St

<p>

MaybePauseSyllable <- (InitialConsonants? Vocalic Stress2? &(sp &Co1))
MaybePauseSyllable <- (InitialConsonants? Vocalic Stress2? &(sp2 &Co1))

<p>

Expand Down Expand Up @@ -1464,7 +1478,11 @@ FalseMarked <- (&PRENAME (!MarkedName Character)* MarkedName)

<p>

NAMEWORD <- (((&caprule MarkedName)/([,] sp !FalseMarked &caprule PRENAME)/(&Vo1 !FalseMarked &caprule PRENAME)/(&caprule (((LAname Juncture?)/(HOIname Juncture?)/(HUEname Juncture?)/(CIname Juncture? &([,]? sp))/(LIUname Juncture?)/(MUEname Juncture?)/(GAOname Juncture?)) !Vo1 [,]? sp? &caprule PRENAME))) (([,]? sp !FalseMarked &caprule PRENAME)/([,]? sp &([Cc] [Ii]) NAMEWORD))* &((sp? [Cc] [Ii] predunit)/(&(([,] sp)/Terminal/[\")]/!.) .)/!.))
Comma1 <- [,] sp2

<p>

NAMEWORD <- (((&caprule MarkedName)/(Comma1 !FalseMarked &caprule PRENAME)/(&Vo1 !FalseMarked &caprule PRENAME)/(&caprule (((LAname Juncture?)/(HOIname Juncture?)/(HUEname Juncture?)/(CIname Juncture? &(Comma0))/(LIUname Juncture?)/(MUEname Juncture?)/(GAOname Juncture?)) !Vo1 Comma0? &caprule PRENAME))) ((Comma0 !FalseMarked &caprule PRENAME)/(Comma0 &([Cc] [Ii]) NAMEWORD))* &((sp? [Cc] [Ii] predunit)/(&((Comma1)/Terminal/[\")]/!.) .)/!.))

<p>

Expand Down Expand Up @@ -1509,10 +1527,10 @@ Namemarker <- ((([Ll] [Aa] Juncture?)/([Hh] [Oo] [Ii] Juncture?)/([Hh] [Uu] Junc
<p>

<LI> changing BadNameMarker to test a mew concept for protection of left boundaries of names which involves less lookahead and no reference to possibly distant name words: the next whitespace after a name marker but not immediately after it must be an actual pause.

<p>
# Badnamemarker <- (Namemarker !Vo1 [, ]? sp? BadPreName)

Badnamemarker <- (Namemarker !Vo1 [, ]? sp? (Syllable &Syllable)* MaybePauseSyllable)
<p>
Badnamemarker <- (Namemarker !Vo1 Comma0? (Syllable &Syllable)* MaybePauseSyllable)

<LI>we test for the bad name marker condition at the beginning of each stream of cmapua,

Expand Down Expand Up @@ -1898,7 +1916,7 @@ CcvCv <- (Initial Vo2 Juncture? Co1 Vo2 Dash? !Vo2)

<p>

CcvCvStreased <- (Initial Vo2 Stress2 Co1 Vo2 Dash? !Vo2)
CcvCvStressed <- (Initial Vo2 Stress2 Co1 Vo2 Dash? !Vo2)

<p>

Expand Down Expand Up @@ -2088,7 +2106,7 @@ PreBorrowing3 <- (&Predstart !Ccvv !Cmapua !SyllableC (!BorrowingTail3 !Stressed

<p>

RfinalDjifoa <- ((CcvCvBad/CvcCv/CvvNoHyphen/CcvBad/CvcBad) (&wy/!Character))
RfinalDjifoa <- ((CcvCvBad/CvcCv/CvvNoHyphen/CcvBad) (&wy/!Character))

<p>

Expand Down Expand Up @@ -2136,15 +2154,15 @@ StressedBorrowing <- (!ResolvedBorrowing &caprule StressedPreBorrowing !(sp? &Vo

<p>

BorrowingDjifoa <- (!ResolvedBorrowing &caprule PreBorrowing2 ((Stress2 wy [,] sp)/(Juncture? wy Dash?)))
BorrowingDjifoa <- (!ResolvedBorrowing &caprule PreBorrowing2 ((Stress2 wy Comma1)/(Juncture? wy Dash?)))

<p>

<LI>stressed borrowing djifoa finally implemented!

<p>

StressedBorrowingDjifoa <- (!ResolvedBorrowing &caprule PreBorrowing3 wy Dash? ([,] sp)?)
StressedBorrowingDjifoa <- (!ResolvedBorrowing &caprule PreBorrowing3 wy Dash? (Comma1)?)

<p>

Expand Down Expand Up @@ -2254,7 +2272,7 @@ FinalDjifoa <- ((Borrowing/CcvCv/CvcCv/CvvNoHyphen/CcvNoY) !Character)

<p>

MediallyStressed <- (StressedBorrowing/CcvCvStreased/CvcCvStressed/CvvNoYMedialStress)
MediallyStressed <- (StressedBorrowing/CcvCvStressed/CvcCvStressed/CvvNoYMedialStress)

<p>

Expand Down Expand Up @@ -2338,7 +2356,7 @@ PhoneticUtterance1 <- (NAMEWORD/(sp? LiQuote)/(sp? NAMEWORD)/(sp? AlienWord)/(sp

<p>

PhoneticUtterance <- (PhoneticUtterance1/([,] sp)/Terminal)+
PhoneticUtterance <- (PhoneticUtterance1/(Comma1)/Terminal)+

<p>

Expand Down Expand Up @@ -2654,19 +2672,19 @@ uy <- ([Uu] [Yy] !Badstress Juncture? !Vo1)

<p>

OptPause <- ([,] sp !(Vo1/Connective) &caprule)
OptPause <- (Comma1 !(Vo1/Connective) &caprule)

<p>

<LI>more punctuation

<p>

Comma <- ([,] sp &caprule)
Comma <- ([,] sp2 &caprule)

<p>

Comma2 <- ([,]? sp &caprule)
Comma2 <- ([,]? sp2 &caprule)

<p>

Expand Down
Loading

0 comments on commit de7df12

Please sign in to comment.