Lojban
The Logical Language
Log in
Username:
Password:
I forgot my password |
CapsLock is on.
Log in
History: Number subgrammar
View page
Source of version: 11
(current)
For computer applications of Lojban, there needs to be a formal grammar of numbers. I started from ((xorxes))' grammar below, and revised it in places and made it into a ((PEG)) grammar. I intend to meet all the rules in chapter 18 of CLL, except the one where it contradicts Lojban for Beginners, and LfB has the more useful reading. Namely, you can have a decimal point inside a "digit" (segment) of a mixed-base number like a time. This involves defining 14 new selma'o. SA is not handled yet (what should it do inside a number?) Also, letters mixed with numbers are not handled, but I consider this a feature and not a bug. The "number" rule in the existing grammar is replaced, and these rules are inserted: ^digit <- NO / TUhO digits <- digit+ thousand <- digits? KIhO whole <- thousand+ digits? / digits approx <- whole / MAhU after-decimal <- whole? ( RAhE whole? / JIhI approx? )? approx-decimal <- (whole? PI)? approx decimal2 <- whole (PI after-decimal / JIhI approx-decimal)? / PAI decimal1 <- MAhU? decimal2 / MAhU decimal <- decimal1 CEhI? digitplace <- decimal PIhE? tuple <- digitplace+ real <- decimal / tuple / indef indef <- PI? RO / TUhO fraction <- real? FIhU fraction? / real complex <- fraction? KAhO fraction? / fraction quantity <- real / fraction / DAhA quantity range <- DAhA? SUhO quantity? number <- indef number / range+ / complex / quantity NO <- pre-cmavo NO-words post-cmavo NO-words <- "no" / "pa" / "re" / "ci" / "vo" / "mu" / "xa" / "ze" / "bi" / "so" / "dau" / "fei" / "gai" / "jau" / "rei" / "vai" / "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" MAhU <- pre-cmavo MAhU-words post-cmavo MAhU-words <- "ma'u" / "ni'u" SUhO <- pre-cmavo SUhO-words post-cmavo SUhO-words <- "su'e" / "su'o" / "me'i" / "za'u" TUhO <- pre-cmavo TUhO-words post-cmavo TUhO-words <- "tu'o" / "xo" PAI <- pre-cmavo PAI-words post-cmavo PAI-words <- "pai" / "te'o" / "ci'i" CEhI <- pre-cmavo CEhI-words post-cmavo CEhI-words <- "ce'i" KIhO <- pre-cmavo KIhO-words post-cmavo KIhO-words <- "ki'o" PI <- pre-cmavo PI-words post-cmavo PI-words <- "pi" PIhE <- pre-cmavo PIhE-words post-cmavo PIhE-words <- "pi'e" RAhE <- pre-cmavo RAhE-words post-cmavo RAhE-words <- "ra'e" RO <- pre-cmavo RO-words post-cmavo RO-words <- "ro" / "so'a" / "so'e" / "so'i" / "so'o" / "so'u" / "rau" / "du'e" / "mo'a" / "no'o" JIhI <- pre-cmavo JIhI-words post-cmavo JIhI-words <- "ji'i" KAhO <- pre-cmavo KAhO-words post-cmavo KAhO-words <- "ka'o" DAhA <- pre-cmavo DAhA-words post-cmavo DAhA-words <- "da'a" FIhU <- pre-cmavo FIhU-words post-cmavo FIhU-words <- "fi'u" ^ ''mi'e ((rab.spir))'' ----- !!!Grammar proposed by ((xorxes)) (work in progress): ^number <- quantifier / complex quantifier <- quantity* FIhU quantity* / quantity+ / PI quantity / real CEhI quantity <- SUhO* RO / SUhO+ digits? / digits complex <- real? KAhO real? / real real <- SUhO* MAhU? (decimal / fraction / aleph / digits / PAI) decimal <- digits? PI digits? (RAhE digits)? fraction <- digits? FIhU digits? aleph <- CIhI digits* digits <- NO+ / TUhO ^ !!!New selma'o || NO | no, pa, re, ci, vo, mu, xa, ze, bi, so, dau, fei, gai, jau, rei, vai, ki'o, pi'e RO | ro, so'a, so'e, so'i, so'o, so'u, rau, du'e, mo'a, no'o SUhO | su'o, su'e, me'i, za'u, ji'i, da'a MAhU | ma'u, ni'u TUhO | tu'o, xo CIhI | ci'i PAI | pai, te'o FIhU | fi'u KAhO | ka'o PI | pi RAhE | ra'e CEhI | ce'i || !!!Notes: #I made {da'a} a SUhO. For da'a in front of a number I propose the following interpretation: {ta mitre li da'a cipimu}, "that is all but 3.5 meters long", i.e. "that is 3.5 meters short of what it ought to be" or something like that. # I made {ji'i} a SUhO because it is also used to indicate a range. This means that I don't use the position of ji'i as an indicator of the magnitude of fuzziness. # Any SUhO in front of a quantity returns another quantity, so they can be added indefinitely, even though in usage they probably won't be. For example, {za'u za'u za'u pa}, "more than more than more than one" is equivalent to {su'o vo}, "at least four" (when dealing with integers/quantifiers). # {pi'e} and {ki'o} can mingle freely with digits, collapsing digits between {pi'e} or {ki'o}s, or between these and {pi} into a single macro-digit. {ki'o} is the special case of {pi'e} for base 1000. Digits after {pi} are decimal unless there is at least one {ki'o} or {pi'e} after {pi}. # Two quantities in a row give the intersection if it exists, else the union. They group from left to right. ''mi'e ((xorxes))'' ----- *((tinkit)) try ((xei)) instead of rei. xo really should be an indef. oh, and what's the initial non-terminal?
About
Introduction
What Others Say
FAQ
Learning
Books
Vocabulary
Lojbanic Software
Community
Web/Email Forums
IRC Chat
Links
News
Dictionary
Swag
Multimedia
Lojbanic Texts
Audio
Wiki
Recent Changes
Popular Pages
How To Edit
The LLG
Official Projects
Publications
Donate!
Contact Us
Search Lojban Resources