jbofihe(1L)

πŸ“¦ version 0.43, in nixos 26.05, nixpkgs unstable

πŸ’… jbofihe(1L) β€” the Lojban parser that literally gets you

okay so bestie, gather round, because this is the manual page for jbofihe β€” a Lojban parser, grammar checker and word glosser all in one little icon. You're reading the 1L manual, and she's serving local-command energy. ✨


🌸 NAME

jbofihe β€” Lojban parser / grammar checker / word glosser. That's the whole vibe: she reads your Lojban, checks the grammar, and glosses the words. Triple threat, no cap. πŸ‘‘


πŸŽ€ SYNOPSIS

jbofihe [-v] [ -h | --help | -? ] [ -k ] [ -t ] [-tf ] [ -l ] [ -b ] [
-x ] [ -H ] [ -m ] [ -w width ] [-ie] [-re] [-se] [-sev] [-cr] [-bt]
[filename]

yeah she's got a lot of flags. we'll get to every single one, don't worry. 🫢


πŸ¦‹ DESCRIPTION

So here's the tea: jbofihe reads a piece of Lojban text and checks it for grammatical correctness. That's the main character job.

If it passes? The output shows you the nesting of the major grammatical constructs by means of bracketing β€” like a little map of how everything sits inside everything else. So satisfying honestly.

Also, words get their approximate English translations shown. And here's the tiny caveat, bestie, listen up: some of these translations are context-dependent. So don't come for her if a gloss looks different in a different sentence, she warned you. πŸ™ˆ


✨ OPTIONS ✨

  • -v β€” Show the program version and exit. Quick little hello-then-bye.
  • -h β€” Show help page.
  • --help β€” Show help page (yes, the long one, same deal).
  • -? β€” Show help page (yes, the chaotic one, also same deal).
  • -k β€” Display lists of tokens after parse and after pseudo-token insertion. Mainly useful for debugging the lexer and parser β€” this is the nerdy backstage pass. πŸ”
  • -t β€” Produce a syntax tree on stdout. Nodes with only one child get filtered out.
  • -tf β€” Produce a full syntax tree on stdout, including nodes with only one child. The unfiltered one. No notes. πŸ’…
  • -l β€” Produce output for typesetting with LaTeX.
  • -x β€” Produce plain text output.
  • -w width β€” Set the width of the screen (in characters) for the -x option. Only relevant for -x, so like, don't expect magic elsewhere.
  • -H β€” Produce HTML output.
  • -b β€” Produce output in 'block' mode, where each block shows the Lojban, the English gloss and a term tag where applicable. The default is the same line. Only applicable to -l and -x (not to -h). 🧱
  • -m β€” Show the amount of memory used by the processing. Look at her go, she's tracking her own RAM.
  • -ie β€” Display elided separators and terminators in the output. They're shown in upper case, to distinguish them from those originally present in the input text. Sneaky uppercase = she added it. πŸ‘€
  • -re β€” Require the input text to have all elidable cmavo actually present. (May be useful for forcing the user to think about the grammatical structure of the input text more carefully when debugging parse errors.) Strict mode. She's making you do the work.
  • -se β€” Show any elidable cmavo that were present unnecessarily in the input text. Where a sequence of elidable cmavo occur, but not all could have been elided, a list of possible 'minimal' sequences is shown. Each 'minimal' sequence is such that: removing any words from it would cause the meaning of the text to change (or make it ungrammatical); yet preserving any more of the original words is unnecessary to preserve the meaning and grammatical correctness of the text. Note, -se and -re are mutually incompatible. If both switches are specified, -re is assumed. 😀
bestie, that's a long one but it matters: minimal sequences = exactly the words you need, no more, no less. And yeah, -se + -re = -re wins. She said what she said.
  • -sev β€” For each sequence of elidable cmavo, show where later ones could be valid before earlier ones, and where the non-elidable word at the end of the sequence could have been valid earlier in the sequence. [This information is used to determine the output of -se, so this is a verbose mode for -se.] πŸ’¬
  • -cr β€” Allow lujvo to contain the cultural rafsi forms CCVVCy (CCVVCV at end of word) described in section 4.16 of the Reference Grammar. This affects recognition of valid lujvo and fu'ivla forms (the latter since it affects the recognition of slinku'i failures).
  • -bt β€” Show backtrace through the pending parser states when a syntax error occurs. This may give some insight into what the parser was expecting to see next, to help in fixing the error. The full breakdown is below, because she's thorough and we love that for her. 🫢

The backtrace comes in three parts:

The first part is a list of rules which are automatically reduced when the erroneous word is encountered. In the extreme case, when everything prior to the erroneous word constitutes a complete text in its own right, the reduction sequence will go right the way to the rule which matches a complete text. Generally though, this will not be the case.

The second part of the report shows the conditions where the grammar requires the next word to be of a type other than that which actually appeared. All the active rules are shown (with periods showing the active points), followed by a list of word classes (i.e. selma'o or BRIVLA/CMENE etc) that would have been valid at this point.

The third part of the report shows the pending states on the parser stack. This may give some information on whereabouts at a wider level the problem situation has occurred.

  • filename β€” The name of the file containing text to be parsed. If omitted, the text is read from standard input. stdin girlies rise up. 🌈

πŸ’€ EXIT STATUS

  • 0 β€” The text was scanned and parsed successfully β€” the text was grammatically valid Lojban. πŸŽ‰ slay.
  • 1/2 β€” The text had grammatical errors that were detected by the main parsing algorithm. 😭 it's giving "almost".
  • 3 β€” The text contained words whose structure was not valid Lojban. No grammatical checking of the text was performed; the grammatical function of the erroneous word(s) could not be determined. straight-up unrecognisable words, she can't even.

πŸ”₯ SEE ALSO

  • cmafihe β€” A program which does English word glossing without the grammar parsing and checking stage. This is useful to get words quickly looked up when studying someone else's text which contains many grammatical errors. (basically the chill friend who doesn't judge your grammar πŸ’–)
  • smujajgau β€” A program for compiling binary dictionaries for use by jbofihe.

πŸ“ FILES

  • /usr/local/lib/jbofihe/smujmaji.dat β€” This file contains all the dictionary data compiled (using smujajgau) into a binary format to facilitate lookup and search.
  • /usr/local/bin/jbofihe β€” The executable. the actual program herself. πŸ‘‘

🧚 ENVIRONMENT

  • JBOFIHE_DICTIONARY β€” This should point to the name of the file containing the dictionary. The default is /usr/local/lib/jbofihe/smujmaji.dat.

πŸ™ˆ BUGS

ju'oru'e so'imei (Surely there are many).

she's being humble and also shady in Lojban at the same time. iconic.

⭐ REFERENCES


πŸ’œ AUTHOR

Richard Curnow <rc@rc0.org.uk>


k that's the whole page!! this was jbofihe(1L), January 2001 edition β€” yes she's an elder, no she's not washed, and honestly? still slaying. πŸ’…βœ¨ go parse something, bestie. πŸ¦‹

β€” mwah, from your group-chat Unix bestie πŸŽ€

πŸ“¦ where this page comes from