@t[Grammar Visualizer]~~META:date created = 2020.10.30., 20:30~~ This is a concept of a technology to display grammar informations on words and longer portions of text, in a way that makes it easier to comprehend. The thought behind GV is to disassemble complex grammar phenomena to elements that are easy to get a grab on. The concept is designed as a Dokuwiki plugin, but it can be developed for other platforms of course. Actual syntax may be altered when developing actual software. @s5[Building Bricks] To make GV work, we’ll need the following information: * Grammar (G) to let the system know how elements of grammar work. * Vocabulary (V) to fill the system with information on actual words. * Styles (S) is the set of CSS descriptions to be used for displaying information. * Text (T) is the actual wiki page using the previous ingredients to tell something about grammar. All of these may be collected on a single wiki page or on separate ones. To refer them, we can use relative links. Let’s suppose we have the following pages on our wiki: ''latvian_grammar'' ''latvian_vocab'' ''styles'' Then, we can add a reference to each on the T page that reads This makes the declarations made on those pages part of the page now being processed. @s5[Grammar (G)] G is a series of grammar tables. When storing grammar information, we need to specify one or more tables for each part of speech. Let’s build a way for English verbs in a multilevel form. First, let’s declare the numbers and persons. This will list 6 verb forms for any tense. ''1sg'' etc. are placeholders you can choose arbitrarily. Also, ''persons'' is a placeholder referring to the contents of this table. Now, let’s create a table for a tense. Now, we have four copies of ''persons'' in ''present''. We can refer to them as ''present.simple.1sg'' or ''present.perfprog.3pl'' etc. Declaring the other tenses similarly: The imperative tense has no further detail, so, it’s called simply as ''imper''. Now, we have a series of names for English verb forms. They will be used in the vocabulary part. @s5[Vocabulary (V)] A V entry lists words and connects them in grammar relations. (and so on). The first word, ''[talk]'' is the dictionary form, the //headword;// it may be any form considered so, say, the 3rd person singular for Hungarian verbs, the infinitive for Latvian ones and so on. The other entries are the //subentries.// All dictionary entries are in square brackets ''[]'' because they may be several words long. The V listing assigns word forms to the placeholders defined in the G tables. A V entry may be more complex. This is an entry of the Latvian verb //lūgt// and one of its forms, //lūdzu.// In addition to the elements seen before, it contains the following information: * Translations in braces ''{}'' for any languages; they are identified with two-letter codes. For each language, several meanings may be specified in square brackets. * Two variable assignments that may be taken care of in any Style. Variable ''cc'' (short for //consonant change//) holds information about the type of the consonant change that happens in the word //lūdzu:// the consonant //g,// found in the infinitive form //lūgt// is changed to //dz// in the form //lūdzu.// Being there many cases when this happens in Latvian, it may be enough to display only //g>dz.// Variable //ending// holds the ending //u// this verb form ends with. This way, we have forms of a word assigned to grammar terms, equipped with additional information if necessary. To make use of that, we need Styles. @s5[Styles (S)] A style is a definition to display grammar information for a word in a formatted way. We may display words of different languages, different parts of speech etc. in different ways, we may want to choose more or less verbose listings, and so on. Therefore, we may define any number of styles for different purposes. This mystical piece defines a short style for English verbs (its name ''env'' stands for this). When a word is displayed in this style, the following happens: * First, the word itself is displayed: ''~'' stands for the word the style was called with. * The left-pointing arrow has no special meaning, it’ll be displayed normally. * Symbol ''~!'' is for the headword the word is belonging to. * The symbol ''#'' is for the grammar description for the word, with dots replaced by spaces. Here, it’s enclosed in parentheses. * In the next line, ''$'' is a command to list the translations provided for the word. And all of these ar shown in a ''tooltip'' when pointing to the word with the mouse. So, if we call the style with the word //I talk,// we’ll get the following in a tooltip: I talk ← talk (present simple 1sg) No translations provided, so they won’t appear. We can make decisions to display or skip parts of the style: ''subentry'' is a question. Is it a subentry? I mean, is it specified in a subsequent line of a V entry and not as a headword? If not (so, it is a headword), the part between the square brackets ''[]'' are omitted to avoid //talk ← talk// if the style is called with the headword //talk.// Making use of variables defined in the V part: ''defined'' is another question which allows the part in brackets to be displayed only if the variable mentioned in it (between percent signs ''%'') is defined. Returning to the previously mentioned setting ''tooltip'', this will make the text to appear as a normal word, part of the text on the page, and upon mouseover, the contents of the style will appear on a CSS tooltip. Other methods include: ''normal'' – the style appears as part of the page ''image'' – it appears on an image @s5[Text (T)] To make use of all the above, we need to display some text. This may be a single word or multiple words, even a pageful of text. For any word included in the text, the explanation belonging to it appears. This command will display these two short sentences, and both //I talk// and //Lūdzu// will appear with their respective explanations. @blogf[nyelvészet számtech in_English]