2019-03-17 14:40:57 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
2021-03-18 19:56:40 +02:00
< title > Command Grammar Tokens< / title >
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-03-19 02:11:25 +02:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
2019-03-17 14:40:57 +02:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
2020-05-03 03:01:21 +03:00
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Contents.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Progress.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Navigation.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Fonts.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Base.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-05-03 03:01:21 +03:00
< script >
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
< / script >
2020-05-03 03:20:55 +03:00
< link href = "../docs-assets/Popups.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2021-03-15 02:09:17 +02:00
< link href = "../docs-assets/Preform-Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-14 19:56:54 +03:00
2019-03-17 14:40:57 +02:00
< / head >
2020-05-03 03:01:21 +03:00
< body class = "commentary-font" >
2020-03-19 02:11:25 +02:00
< nav role = "navigation" >
2022-04-28 19:37:28 +03:00
< h1 > < a href = "../index.html" >
2020-05-03 18:34:53 +03:00
< img src = "../docs-assets/Inform.png" height = 72" >
2020-04-14 19:56:54 +03:00
< / a > < / h1 >
2022-04-28 19:37:28 +03:00
< ul > < li > < a href = "../index.html" > home< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Compiler< / h2 > < ul >
< li > < a href = "../structure.html" > structure< / a > < / li >
< li > < a href = "../inbuildn.html" > inbuild< / a > < / li >
< li > < a href = "../inform7n.html" > inform7< / a > < / li >
< li > < a href = "../intern.html" > inter< / a > < / li >
< li > < a href = "../services.html" > services< / a > < / li >
2022-04-18 17:46:46 +03:00
< li > < a href = "../secrets.html" > secrets< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Other Tools< / h2 > < ul >
< li > < a href = "../inblorbn.html" > inblorb< / a > < / li >
< li > < a href = "../indocn.html" > indoc< / a > < / li >
< li > < a href = "../inform6.html" > inform6< / a > < / li >
< li > < a href = "../inpolicyn.html" > inpolicy< / a > < / li >
< li > < a href = "../inrtpsn.html" > inrtps< / a > < / li >
2022-04-06 13:14:15 +03:00
< / ul > < h2 > Resources< / h2 > < ul >
< li > < a href = "../extensions.html" > extensions< / a > < / li >
< li > < a href = "../kits.html" > kits< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Repository< / h2 > < ul >
< li > < a href = "https://github.com/ganelson/inform" > < img src = "../docs-assets/github.png" height = 18 > github< / a > < / li >
< / ul > < h2 > Related Projects< / h2 > < ul >
2022-04-28 19:20:06 +03:00
< li > < a href = "../../../inweb/index.html" > inweb< / a > < / li >
< li > < a href = "../../../intest/index.html" > intest< / a > < / li >
2020-03-19 02:11:25 +02:00
2020-04-14 19:56:54 +03:00
< / ul >
2020-03-19 02:11:25 +02:00
< / nav >
< main role = "main" >
2021-03-18 19:56:40 +02:00
<!-- Weave of 'Command Grammar Tokens' generated by Inweb -->
2020-05-03 03:01:21 +03:00
< div class = "breadcrumbs" >
2022-04-28 19:37:28 +03:00
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../inform7n.html" > Inform7< / a > < / li > < li > < a href = "index.html" > if< / a > < / li > < li > < a href = "index.html#5" > Chapter 5: Command Parser< / a > < / li > < li > < b > Command Grammar Tokens< / b > < / li > < / ul > < / div >
2021-03-18 19:56:40 +02:00
< p class = "purpose" > CGs are list of CG lines, which are lists of CG tokens.< / p >
2021-03-15 02:09:17 +02:00
2022-08-29 02:11:10 +03:00
< ul class = "toc" > < li > < a href = "5-cgt.html#SP1" > § 1. Introduction< / a > < / li > < li > < a href = "5-cgt.html#SP2" > § 2. Text to a CG token list< / a > < / li > < li > < a href = "5-cgt.html#SP9" > § 9. The GTC< / a > < / li > < li > < a href = "5-cgt.html#SP11" > § 11. Logging< / a > < / li > < li > < a href = "5-cgt.html#SP12" > § 12. Parsing nonliteral tokens< / a > < / li > < li > < a href = "5-cgt.html#SP14" > § 14. Determining< / a > < / li > < li > < a href = "5-cgt.html#SP15" > § 15. Scoring< / a > < / li > < li > < a href = "5-cgt.html#SP16" > § 16. Verification< / a > < / li > < / ul > < hr class = "tocbar" >
2021-03-15 02:09:17 +02:00
2021-03-19 16:43:02 +02:00
< p class = "commentary firstcommentary" > < a id = "SP1" class = "paragraph-anchor" > < / a > < b > § 1. Introduction. < / b > Until 2021, CG tokens were held as parse nodes in the syntax tree, with a
special type < span class = "extract" > < span class = "extract-syntax" > TOKEN_NT< / span > < / span > and a set of annotations, but as cute as that was
it was also obfuscatory, and now each CG token corresponds to a < a href = "5-cgt.html#SP1" class = "internal" > cg_token< / a >
object as follows:
< / p >
2021-03-15 02:09:17 +02:00
2021-03-18 19:56:40 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > typedef< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > text_of_token< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > ;< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > what_token_describes< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > 0 or else one of the < / span > < span class = "extract" > < span class = "extract-syntax" > *_GTC< / span > < / span > < span class = "comment-syntax" > values< / span >
2021-03-18 19:56:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > binary_predicate< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > token_relation< / span > < span class = "plain-syntax" > ;< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > noun_filter_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > noun_filter< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > command_grammar< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > defined_by< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > slash_class< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > used in slashing: see < / span > < a href = "5-cgl.html#SP15" class = "internal" > CGLines::slash< / a >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > slash_dash_dash< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > ditto< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > next_token< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > in the list for a CG line< / span >
2021-03-18 19:56:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > CLASS_DEFINITION< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > ;< / span >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CGTokens::cgt_of< / span > < button class = "popup" onclick = "togglePopup('usagePopup1')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup1" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::cgt_of< / span > < / span > :< br / > < a href = "5-cgt.html#SP6" > § 6< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > lit< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > CREATE< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > text_of_token< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > slash_dash_dash< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > slash_class< / span > < span class = "plain-syntax" > = < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > what_token_describes< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > lit< / span > < span class = "plain-syntax" > ?< / span > < span class = "identifier-syntax" > LITERAL_GTC:0< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_relation< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > noun_filter< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > defined_by< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > next_token< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ;< / span >
2021-03-18 19:56:40 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
< ul class = "endnotetexts" > < li > The structure cg_token is accessed in 5/cgl and here.< / li > < / ul >
2021-03-19 16:43:02 +02:00
< p class = "commentary firstcommentary" > < a id = "SP2" class = "paragraph-anchor" > < / a > < b > § 2. Text to a CG token list. < / b > Tokens are created when text such as "drill [something] with [something]"
is parsed, from an Understand sentence or elsewhere. What happens is much
the same as when text with substitutions is read: the text is retokenised
by the lexer to produce the following, in which the square brackets have
become commas:
2021-03-15 02:09:17 +02:00
< / p >
2021-03-19 16:43:02 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > "drill" , something , "with" , something< / span >
2021-03-18 19:56:40 +02:00
< / pre >
2021-03-19 16:43:02 +02:00
< p class = "commentary" > In fact we use a different punctuation set from the lexer's default, because
we want forward slashes to break words, so that we need < span class = "extract" > < span class = "extract-syntax" > /< / span > < / span > to be a punctuation
mark: thus "get away/off/out" becomes
< / p >
2021-03-18 19:56:40 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > "get" "away" / "off" / "out"< / span >
< / pre >
< pre class = "definitions code-font" > < span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > GRAMMAR_PUNCTUATION_MARKS< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > L< / span > < span class = "string-syntax" > ".,:;?!(){}[]/"< / span > < span class = "plain-syntax" > < / span > < span class = "comment-syntax" > note the slash< / span >
< / pre >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::break< / span > < button class = "popup" onclick = "togglePopup('usagePopup2')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup2" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::break< / span > < / span > :< br / > < a href = "5-cgt.html#SP4" > § 4< / a > , < a href = "5-cgt.html#SP6" > § 6< / a > < br / > Understand Sentences - < a href = "5-us.html#SP10_5" > § 10.5< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > wchar_t< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > expand< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP2_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Reject this if it contains punctuation< / span > < span class = "named-paragraph-number" > 2.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Feeds::feed_C_string_full< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > expand< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "constant-syntax" > GRAMMAR_PUNCTUATION_MARKS< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP2_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Reject this if it contains two consecutive commas< / span > < span class = "named-paragraph-number" > 2.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP2_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Reject this if it slashes off a numerical word< / span > < span class = "named-paragraph-number" > 2.3< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > ;< / span >
2021-03-18 19:56:40 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-03-19 16:43:02 +02:00
< p class = "commentary firstcommentary" > < a id = "SP2_1" class = "paragraph-anchor" > < / a > < b > § 2.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Reject this if it contains punctuation< / span > < span class = "named-paragraph-number" > 2.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
2021-03-19 16:43:02 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > skip< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > literal_punct< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > =0; < / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ]; < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ++) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > '['< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > skip< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > ']'< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > skip< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > skip< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > continue< / span > < span class = "plain-syntax" > ;< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > '.'< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > ','< / span > < span class = "plain-syntax" > ) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > '!'< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > '?'< / span > < span class = "plain-syntax" > ) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > ':'< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ] == < / span > < span class = "character-syntax" > ';'< / span > < span class = "plain-syntax" > ))< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > literal_punct< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > literal_punct< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_LiteralPunctuation< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "'understand' text cannot contain literal punctuation"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "or more specifically cannot contain any of these: . , ! ? : ; since they "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "are already used in various ways by the parser, and would not correctly "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "match here."< / span > < span class = "plain-syntax" > );< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > ;< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP2" > § 2< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP2_2" class = "paragraph-anchor" > < / a > < b > § 2.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Reject this if it contains two consecutive commas< / span > < span class = "named-paragraph-number" > 2.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
2021-03-19 16:43:02 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_THROUGH_WORDING< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > Wordings::last_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > compare_word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > COMMA_V< / span > < span class = "plain-syntax" > )) & & (< / span > < span class = "identifier-syntax" > compare_word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > +1, < / span > < span class = "identifier-syntax" > COMMA_V< / span > < span class = "plain-syntax" > ))) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_UnderstandCommaCommand< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "'understand' as an action cannot involve a comma"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "since a command leading to an action never does. "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "(Although Inform understands commands like 'PETE, LOOK' "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "only the part after the comma is read as an action command: "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "the part before the comma is read as the name of someone, "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "according to the usual rules for parsing a name.) "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "Because of the way Inform processes text with square "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "brackets, this problem message is also sometimes seen "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "if empty square brackets are used, as in 'Understand "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "\"bless []\" as blessing.'"< / span > < span class = "plain-syntax" > );< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > ;< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP2" > § 2< / a > .< / li > < / ul >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP2_3" class = "paragraph-anchor" > < / a > < b > § 2.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Reject this if it slashes off a numerical word< / span > < span class = "named-paragraph-number" > 2.3< / span > < / span > < span class = "comment-syntax" > =< / span >
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_THROUGH_WORDING< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > FORWARDSLASH_V< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (((< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > Wordings::last_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > )) & & (< / span > < a href = "5-cgt.html#SP3" class = "function-link" > < span class = "function-syntax" > CGTokens::numerical< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > +1))) ||< / span >
< span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > > < / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > )) & & (< / span > < a href = "5-cgt.html#SP3" class = "function-link" > < span class = "function-syntax" > CGTokens::numerical< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > -1)))) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_SlashCutsDigits< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "'understand' uses a slash '/' here in a way which cuts off something "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "which contains only digits"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "and this will not do anything good. (Note that a slash in grammar "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "like this means an alternative choice of word.)"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP2" > § 2< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP3" class = "paragraph-anchor" > < / a > < b > § 3. < / b > < / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::numerical< / span > < button class = "popup" onclick = "togglePopup('usagePopup3')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup3" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::numerical< / span > < / span > :< br / > < a href = "5-cgt.html#SP2_3" > § 2.3< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wchar_t< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > wn< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > for< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > =0; < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > < < / span > < span class = "identifier-syntax" > Wide::len< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > ); < / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ++)< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Characters::isdigit< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > text< / span > < span class = "plain-syntax" > [< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ]) == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP4" class = "paragraph-anchor" > < / a > < b > § 4. < / b > And here the result becomes a token list:
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CGTokens::tokenise< / span > < button class = "popup" onclick = "togglePopup('usagePopup4')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup4" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::tokenise< / span > < / span > :< br / > Understand Sentences - < a href = "5-us.html#SP19_9" > § 19.9< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wchar_t< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > as_wide_string< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP2" class = "function-link" > < span class = "function-syntax" > CGTokens::break< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > as_wide_string< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > tokens< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP6" class = "function-link" > < span class = "function-syntax" > CGTokens::break_into_tokens< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::empty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > TW< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > tokens< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_UnderstandEmptyText< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "'understand' should be followed by text which contains at least "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "one word or square-bracketed token"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "so for instance 'understand \"take [something]\" as taking' is fine, "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "but 'understand \"\" as the fog' is not. The same applies to the contents "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "of 'topic' columns in tables, since those are also instructions for "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "understanding."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > tokens< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP5" class = "paragraph-anchor" > < / a > < b > § 5. < / b > The following tiny Preform grammar is then used to break up the resulting
2021-03-19 16:43:02 +02:00
text at commas:
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "Preform-displayed-code all-displayed-code code-font" >
< span class = "Preform-function-syntax" > < grammar-token-breaking> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ::=< / span >
2021-03-19 16:43:02 +02:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ...< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > ,< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ...< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { NOT_APPLICABLE, - }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < quoted-text> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { TRUE, - }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ...< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { FALSE, - }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
< ul class = "endnotetexts" > < li > This is < a href = "../words-module/4-ap.html" class = "internal" > Preform grammar< / a > , not regular C code.< / li > < / ul >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP6" class = "paragraph-anchor" > < / a > < b > § 6. < / b > The following function takes a wording and turns it into a linked list of
2021-03-19 16:43:02 +02:00
CG tokens, divided by commas:
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CGTokens::break_into_tokens< / span > < button class = "popup" onclick = "togglePopup('usagePopup5')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup5" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::break_into_tokens< / span > < / span > :< br / > < a href = "5-cgt.html#SP4" > § 4< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < a href = "5-cgt.html#SP6" class = "function-link" > < span class = "function-syntax" > CGTokens::break_into_tokens_r< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > }< / span >
< span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CGTokens::break_into_tokens_r< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "function-syntax" > < grammar-token-breaking> < / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > switch< / span > < span class = "plain-syntax" > (< / span > < span class = "function-syntax" > < < r> > < / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NOT_APPLICABLE:< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > GET_RW< / span > < span class = "plain-syntax" > (< / span > < span class = "function-syntax" > < grammar-token-breaking> < / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > RW< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > GET_RW< / span > < span class = "plain-syntax" > (< / span > < span class = "function-syntax" > < grammar-token-breaking> < / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 2< / span > < span class = "plain-syntax" > );< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP6" class = "function-link" > < span class = "function-syntax" > CGTokens::break_into_tokens_r< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > LW< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP6" class = "function-link" > < span class = "function-syntax" > CGTokens::break_into_tokens_r< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > RW< / span > < span class = "plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE:< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Word::dequote< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ));< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (*(< / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ))) == < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > ;< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP2" class = "function-link" > < span class = "function-syntax" > CGTokens::break< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Lexer::word_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::first_wn< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > )), < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_THROUGH_WORDING< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP1" class = "function-link" > < span class = "function-syntax" > CGTokens::cgt_of< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::one_word< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > i< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP7" class = "function-link" > < span class = "function-syntax" > CGTokens::add_to_list< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE:< / span > < span class = "plain-syntax" > {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP1" class = "function-link" > < span class = "function-syntax" > CGTokens::cgt_of< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cgt.html#SP7" class = "function-link" > < span class = "function-syntax" > CGTokens::add_to_list< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > ;< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > }< / span >
2021-03-19 16:43:02 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP7" class = "paragraph-anchor" > < / a > < b > § 7. < / b > If < span class = "extract" > < span class = "extract-syntax" > list< / span > < / span > represents the head of the list (and is < span class = "extract" > < span class = "extract-syntax" > NULL< / span > < / span > for an empty list),
2021-03-19 16:43:02 +02:00
this adds < span class = "extract" > < span class = "extract-syntax" > cgt< / span > < / span > at the end and returns the new head.
< / p >
2021-03-15 02:09:17 +02:00
2021-03-19 16:43:02 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CGTokens::add_to_list< / span > < button class = "popup" onclick = "togglePopup('usagePopup6')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup6" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::add_to_list< / span > < / span > :< br / > < a href = "5-cgt.html#SP6" > § 6< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-18 19:56:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > while< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > next_token< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > next_token< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > x< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > next_token< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > list< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-03-19 16:43:02 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP8" class = "paragraph-anchor" > < / a > < b > § 8. < / b > As the above shows, the text of a token is not necessarily a single word,
2021-03-19 16:43:02 +02:00
unless it's a literal.
< / p >
2021-03-18 19:56:40 +02:00
2021-03-19 16:43:02 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::text< / span > < button class = "popup" onclick = "togglePopup('usagePopup7')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup7" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::text< / span > < / span > :< br / > < a href = "5-cgt.html#SP14" > § 14< / a > , < a href = "5-cgt.html#SP14_2" > § 14.2< / a > , < a href = "5-cgt.html#SP16" > § 16< / a > < br / > Understand Sentences - < a href = "5-us.html#SP19_11" > § 19.11< / a > < br / > Command Grammar Lines - < a href = "5-cgl.html#SP14" > § 14< / a > , < a href = "5-cgl.html#SP15_1" > § 15.1< / a > , < a href = "5-cgl.html#SP16_1" > § 16.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ?(< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > text_of_token< / span > < span class = "plain-syntax" > ):(< / span > < span class = "identifier-syntax" > EMPTY_WORDING< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP9" class = "paragraph-anchor" > < / a > < b > § 9. The GTC. < / b > The GTC, or grammar token code, is a sort of type indicator for tokens. As
2021-03-19 16:43:02 +02:00
produced by the tokeniser above, tokens initially have GTC either < span class = "extract" > < span class = "extract-syntax" > UNDETERMINED_GTC< / span > < / span >
or < span class = "extract" > < span class = "extract-syntax" > LITERAL_GTC< / span > < / span > . Differentiation of non-literal tokens into other types happens
2022-08-29 02:11:10 +03:00
in < a href = "5-cgt.html#SP14" class = "internal" > CGTokens::determine< / a > .
2021-03-19 16:43:02 +02:00
< / p >
< p class = "commentary" > Note that there are two sets of GTC values, one set positive, one negative. The
negative ones correspond closely to command-parser grammar reserved tokens in
the old I6 compiler, and this is indeed what they compile to if we are
generating I6 code.
2021-03-15 02:09:17 +02:00
< / p >
2021-03-19 16:43:02 +02:00
< pre class = "definitions code-font" > < span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > NAMED_TOKEN_GTC< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > RELATED_GTC< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 2< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > STUFF_GTC< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 3< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > ANY_STUFF_GTC< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 4< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > ANY_THINGS_GTC< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 5< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > LITERAL_GTC< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 6< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > UNDETERMINED_GTC< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 0< / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > NOUN_TOKEN_GTC< / span > < span class = "plain-syntax" > -1 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > noun< / span > < / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > MULTI_TOKEN_GTC< / span > < span class = "plain-syntax" > -2 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > multi< / span > < / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > MULTIINSIDE_TOKEN_GTC< / span > < span class = "plain-syntax" > -3 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > multiinside< / span > < / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > MULTIHELD_TOKEN_GTC< / span > < span class = "plain-syntax" > -4 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > multiheld< / span > < / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > HELD_TOKEN_GTC< / span > < span class = "plain-syntax" > -5 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > held< / span > < / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > CREATURE_TOKEN_GTC< / span > < span class = "plain-syntax" > -6 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > creature< / span > < / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > TOPIC_TOKEN_GTC< / span > < span class = "plain-syntax" > -7 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > topic< / span > < / span >
< span class = "definition-keyword" > define< / span > < span class = "constant-syntax" > MULTIEXCEPT_TOKEN_GTC< / span > < span class = "plain-syntax" > -8 < / span > < span class = "comment-syntax" > like I6 < / span > < span class = "extract" > < span class = "extract-syntax" > multiexcept< / span > < / span >
< / pre >
2021-03-15 02:09:17 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::is_literal< / span > < button class = "popup" onclick = "togglePopup('usagePopup8')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup8" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::is_literal< / span > < / span > :< br / > < a href = "5-cgt.html#SP14" > § 14< / a > , < a href = "5-cgt.html#SP16" > § 16< / a > < br / > Understand Sentences - < a href = "5-us.html#SP19_11" > § 19.11< / a > < br / > Command Grammar Lines - < a href = "5-cgl.html#SP14" > § 14< / a > , < a href = "5-cgl.html#SP15_2" > § 15.2< / a > , < a href = "5-cgl.html#SP16_2" > § 16.2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > LITERAL_GTC< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::is_I6_parser_token< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > < < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::is_topic< / span > < button class = "popup" onclick = "togglePopup('usagePopup9')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup9" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::is_topic< / span > < / span > :< br / > < a href = "5-cgt.html#SP16" > § 16< / a > < br / > Command Grammar Lines - < a href = "5-cgl.html#SP16_2" > § 16.2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > TOPIC_TOKEN_GTC< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP10" class = "paragraph-anchor" > < / a > < b > § 10. < / b > A multiple token is one which permits multiple matches in the run-time command
2021-03-19 16:43:02 +02:00
parser: for instance, the player can type ALL where a < span class = "extract" > < span class = "extract-syntax" > MULTI_TOKEN_GTC< / span > < / span > is
expected.
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::is_multiple< / span > < button class = "popup" onclick = "togglePopup('usagePopup10')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup10" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::is_multiple< / span > < / span > :< br / > Command Grammar Lines - < a href = "5-cgl.html#SP16_1" > § 16.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-18 19:56:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > switch< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTI_TOKEN_GTC:< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIINSIDE_TOKEN_GTC:< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIHELD_TOKEN_GTC:< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIEXCEPT_TOKEN_GTC:< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP11" class = "paragraph-anchor" > < / a > < b > § 11. Logging. < / b > < / p >
2020-05-03 03:01:21 +03:00
2021-03-15 02:09:17 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::log< / span > < button class = "popup" onclick = "togglePopup('usagePopup11')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup11" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::log< / span > < / span > :< br / > IF Module - < a href = "1-im.html#SP2" > § 2< / a > , < a href = "1-im.html#SP2_3" > § 2.3< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "< no-cgt> "< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "< CGT%d:%W"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > allocation_id< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > text_of_token< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > slash_class< / span > < span class = "plain-syntax" > != < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "/%d"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > slash_class< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > slash_dash_dash< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "/--"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > switch< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NAMED_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = named token"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > RELATED_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = related"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > STUFF_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = stuff"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ANY_STUFF_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = any stuff"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ANY_THINGS_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = any things"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NOUN_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = noun"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTI_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = multi"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIINSIDE_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = multiinside"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIHELD_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = multiheld"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > HELD_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = held"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > CREATURE_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = creature"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TOPIC_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = topic"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIEXCEPT_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > " = multiexcept"< / span > < span class = "plain-syntax" > ); < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "> "< / span > < span class = "plain-syntax" > );< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP12" class = "paragraph-anchor" > < / a > < b > § 12. Parsing nonliteral tokens. < / b > Unless a token is literal and in double-quotes, it will start out as having
2021-03-19 16:43:02 +02:00
< span class = "extract" > < span class = "extract-syntax" > UNDETERMINED_GTC< / span > < / span > until we investigate what the words in it mean, which we
will do with the following Preform grammar.
2021-03-15 02:09:17 +02:00
< / p >
2021-03-19 16:43:02 +02:00
< p class = "commentary" > Note that < grammar-token> always matches any text, even if it sometimes throws
a problem message on the way. Its return integer is a valid GTC, and its
return pointer is a (non-null) description of what the token matches.
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "Preform-displayed-code all-displayed-code code-font" >
< span class = "Preform-function-syntax" > < grammar-token> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ::=< / span >
2022-08-29 02:11:10 +03:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < named-grammar-token> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Apply the command grammar< / span > < span class = "named-paragraph-number" > 12.1< / span > < / a > < / span >
2021-03-19 16:43:02 +02:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > any< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > things< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { ANY_THINGS_GTC, Specifications::from_kind(K_thing) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > any< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < s-description> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { ANY_STUFF_GTC, RP[1] }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > anything< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { ANY_STUFF_GTC, Specifications::from_kind(K_thing) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > anybody< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { ANY_STUFF_GTC, Specifications::from_kind(K_person) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > anyone< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { ANY_STUFF_GTC, Specifications::from_kind(K_person) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > anywhere< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { ANY_STUFF_GTC, Specifications::from_kind(K_room) }< / span >
2022-08-29 02:11:10 +03:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > something< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > related< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > by< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > reversed< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < relation-name> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Apply the reversed relation< / span > < span class = "named-paragraph-number" > 12.2< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > something< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > related< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > by< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < relation-name> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Apply the relation< / span > < span class = "named-paragraph-number" > 12.3< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > something< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > related< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > by< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ...< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_4" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue PM_GrammarBadRelation problem< / span > < span class = "named-paragraph-number" > 12.4< / span > < / a > < / span >
2021-03-19 16:43:02 +02:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < standard-grammar-token> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { pass 1 }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < definite-article> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < k-kind> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { STUFF_GTC, Specifications::from_kind(RP[2]) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < s-description> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { STUFF_GTC, RP[1] }< / span >
2022-08-29 02:11:10 +03:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-function-syntax" > < s-type-expression> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_9" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue PM_BizarreToken problem< / span > < span class = "named-paragraph-number" > 12.9< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ...< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_10" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue PM_UnknownToken problem< / span > < span class = "named-paragraph-number" > 12.10< / span > < / a > < / span >
2021-03-15 02:09:17 +02:00
< span class = "Preform-function-syntax" > < standard-grammar-token> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ::=< / span >
2021-03-19 16:43:02 +02:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > something< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { NOUN_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > things< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { MULTI_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > things< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > inside< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { MULTIINSIDE_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > things< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > preferably< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > held< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { MULTIHELD_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > something< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > preferably< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > held< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { HELD_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > other< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > things< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { MULTIEXCEPT_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > someone< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { CREATURE_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > somebody< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { CREATURE_TOKEN_GTC, Specifications::from_kind(K_object) }< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > text< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > { TOPIC_TOKEN_GTC, Specifications::from_kind(K_understanding) }< / span >
2022-08-29 02:11:10 +03:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > topic< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_5" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue PM_UseTextNotTopic problem< / span > < span class = "named-paragraph-number" > 12.5< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > a< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > topic< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_5" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue PM_UseTextNotTopic problem< / span > < span class = "named-paragraph-number" > 12.5< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > object< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_6" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue PM_UseThingNotObject problem< / span > < span class = "named-paragraph-number" > 12.6< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > an< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > object< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_6" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue PM_UseThingNotObject problem< / span > < span class = "named-paragraph-number" > 12.6< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > something< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > held< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > |< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_7" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue something held problem message< / span > < span class = "named-paragraph-number" > 12.7< / span > < / a > < / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > things< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > held< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > ==> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP12_8" class = "named-paragraph-link" > < span class = "named-paragraph" > Issue things held problem message< / span > < span class = "named-paragraph-number" > 12.8< / span > < / a > < / span >
2021-03-15 02:09:17 +02:00
< span class = "Preform-function-syntax" > < named-grammar-token> < / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > internal< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-constant-syntax" > {< / span >
2021-03-16 02:25:37 +02:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > command_grammar< / span > < span class = "Preform-plain-syntax" > *< / span > < span class = "Preform-identifier-syntax" > cg< / span > < span class = "Preform-plain-syntax" > = < / span > < a href = "5-cg.html#SP11" class = "function-link" > < span class = "Preform-function-syntax" > CommandGrammars::named_token_by_name< / span > < / a > < span class = "Preform-plain-syntax" > (< / span > < span class = "Preform-identifier-syntax" > W< / span > < span class = "Preform-plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > if< / span > < span class = "Preform-plain-syntax" > (< / span > < span class = "Preform-identifier-syntax" > cg< / span > < span class = "Preform-plain-syntax" > ) {< / span >
< span class = "Preform-plain-syntax" > ==> { -, < / span > < span class = "Preform-identifier-syntax" > cg< / span > < span class = "Preform-plain-syntax" > };< / span >
< span class = "Preform-plain-syntax" > < / span > < span class = "Preform-reserved-syntax" > return< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-identifier-syntax" > TRUE< / span > < span class = "Preform-plain-syntax" > ;< / span >
< span class = "Preform-plain-syntax" > }< / span >
< span class = "Preform-plain-syntax" > ==> { < / span > < span class = "Preform-identifier-syntax" > fail< / span > < span class = "Preform-plain-syntax" > < / span > < span class = "Preform-identifier-syntax" > nonterminal< / span > < span class = "Preform-plain-syntax" > };< / span >
< span class = "Preform-plain-syntax" > }< / span >
< / pre >
< ul class = "endnotetexts" > < li > This is < a href = "../words-module/4-ap.html" class = "internal" > Preform grammar< / a > , not regular C code.< / li > < / ul >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP12_1" class = "paragraph-anchor" > < / a > < b > § 12.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Apply the command grammar< / span > < span class = "named-paragraph-number" > 12.1< / span > < / span > < span class = "Preform-comment-syntax" > =< / span >
2021-03-19 16:43:02 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > NAMED_TOKEN_GTC< / span > < span class = "plain-syntax" > , < / span > < a href = "5-pp.html#SP4" class = "function-link" > < span class = "function-syntax" > ParsingPlugin::rvalue_from_command_grammar< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > RP< / span > < span class = "plain-syntax" > [1]) }< / span >
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_2" class = "paragraph-anchor" > < / a > < b > § 12.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Apply the reversed relation< / span > < span class = "named-paragraph-number" > 12.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-19 16:43:02 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > RELATED_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Rvalues::from_binary_predicate< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > RP< / span > < span class = "plain-syntax" > [1])) }< / span >
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_3" class = "paragraph-anchor" > < / a > < b > § 12.3. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Apply the relation< / span > < span class = "named-paragraph-number" > 12.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-19 16:43:02 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > RELATED_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Rvalues::from_binary_predicate< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > RP< / span > < span class = "plain-syntax" > [1]) }< / span >
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_4" class = "paragraph-anchor" > < / a > < b > § 12.4. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue PM_GrammarBadRelation problem< / span > < span class = "named-paragraph-number" > 12.4< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_GrammarBadRelation< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar token '%2' in the sentence %1 "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "invites me to understand names of related things, "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "but the relation is not one that I know."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > RELATED_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Rvalues::from_binary_predicate< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > R_equality< / span > < span class = "plain-syntax" > ) }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_5" class = "paragraph-anchor" > < / a > < b > § 12.5. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue PM_UseTextNotTopic problem< / span > < span class = "named-paragraph-number" > 12.5< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_UseTextNotTopic< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar token '%2' in the sentence %1 would in some "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "ways be the right logical way to suggest 'any words at "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "all here', but Inform in actually uses the special syntax "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "'[text]' for that. %P"< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "This is partly for historical reasons, but also because "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "'[text]' is a token which can't be used in every sort of "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "Understand grammar - for example, it can't be used with 'matches' "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "or in descriptions of actions or in table columns; it's really "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "intended only for defining new commands."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > TOPIC_TOKEN_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_understanding< / span > < span class = "plain-syntax" > ) };< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > (twice).< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_6" class = "paragraph-anchor" > < / a > < b > § 12.6. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue PM_UseThingNotObject problem< / span > < span class = "named-paragraph-number" > 12.6< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_UseThingNotObject< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar token '%2' in the sentence %1 would in some "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "ways be the right logical way to suggest 'any object at "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "all here', but Inform uses the special syntax '[thing]' "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "for that. (Or '[things]' if multiple objects are allowed.)"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > MULTI_TOKEN_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_object< / span > < span class = "plain-syntax" > ) }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > (twice).< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_7" class = "paragraph-anchor" > < / a > < b > § 12.7. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue something held problem message< / span > < span class = "named-paragraph-number" > 12.7< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-cgt.html#SP13" class = "function-link" > < span class = "function-syntax" > CGTokens::incompatible_change_problem< / span > < / a > < span class = "plain-syntax" > (< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "something held"< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "something"< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "something preferably held"< / span > < span class = "plain-syntax" > );< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > HELD_TOKEN_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_object< / span > < span class = "plain-syntax" > ) }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_8" class = "paragraph-anchor" > < / a > < b > § 12.8. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue things held problem message< / span > < span class = "named-paragraph-number" > 12.8< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-cgt.html#SP13" class = "function-link" > < span class = "function-syntax" > CGTokens::incompatible_change_problem< / span > < / a > < span class = "plain-syntax" > (< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "things held"< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "things"< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "things preferably held"< / span > < span class = "plain-syntax" > );< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > MULTIHELD_TOKEN_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_object< / span > < span class = "plain-syntax" > ) }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_9" class = "paragraph-anchor" > < / a > < b > § 12.9. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue PM_BizarreToken problem< / span > < span class = "named-paragraph-number" > 12.9< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "$T"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind_of< / span > < span class = "plain-syntax" > (3, < / span > < span class = "identifier-syntax" > RP< / span > < span class = "plain-syntax" > [1]);< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_BizarreToken< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar token '%2' in the sentence %1 looked to me as "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "if it might be %3, but this isn't something allowed in "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "parsing grammar."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > STUFF_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_thing< / span > < span class = "plain-syntax" > ) }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP12_10" class = "paragraph-anchor" > < / a > < b > § 12.10. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Issue PM_UnknownToken problem< / span > < span class = "named-paragraph-number" > 12.10< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
2020-05-03 03:01:21 +03:00
2021-03-15 02:09:17 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "$T"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_UnknownToken< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "I was unable to understand what you meant by the grammar token '%2' "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "in the sentence %1."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > ==> { < / span > < span class = "constant-syntax" > STUFF_GTC< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_thing< / span > < span class = "plain-syntax" > ) }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP12" > § 12< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP13" class = "paragraph-anchor" > < / a > < b > § 13. < / b > Something of an extended mea culpa: but it had the desired effect, in
2021-03-19 16:43:02 +02:00
that nobody complained about what might have been a controversial change.
< / p >
2021-03-15 02:09:17 +02:00
2021-03-19 16:43:02 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::incompatible_change_problem< / span > < button class = "popup" onclick = "togglePopup('usagePopup12')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup12" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::incompatible_change_problem< / span > < / span > :< br / > < a href = "5-cgt.html#SP12_7" > § 12.7< / a > , < a href = "5-cgt.html#SP12_8" > § 12.8< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > char< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > token_tried< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > char< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > token_instead< / span > < span class = "plain-syntax" > ,< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > char< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > token_better< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_text< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > token_tried< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_text< / span > < span class = "plain-syntax" > (3, < / span > < span class = "identifier-syntax" > token_instead< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_text< / span > < span class = "plain-syntax" > (4, < / span > < span class = "identifier-syntax" > token_better< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_ObsoleteHeldTokens< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "In the sentence %1, you used the '[%2]' as a token, which was "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "allowed in the early Public Beta versions of Inform 7, but became "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "out of date in August 2006.%L A change was then made so that if an "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "action needed to apply to something which was carried, this would "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "now be specified when the action is created - not in the Understand "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "line for it. For instance, one might say 'Dismantling is an action "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "which applies to one carried thing', instead of '...which applies "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "to one thing', and then write grammar such as 'Understand \"dismantle "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "[something] as dismantling' instead of '...[something held]...'. "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "So you probably need to change your '[%2]' token to '[%3]', and "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "change the action's definition (unless it is a built-in action "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "such as 'dropping'). An alternative, though, for fine-tuning is to "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "change it to '[%4]', which allows anything to be Understood, but "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "in cases of ambiguity tends to guess that something held is more "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "likely to be what the player means than something not held."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2020-05-03 03:01:21 +03:00
< span class = "plain-syntax" > }< / span >
2019-03-17 14:40:57 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP14" class = "paragraph-anchor" > < / a > < b > § 14. Determining. < / b > To calculate a description of what is being described by a token, then, we
2021-03-19 16:43:02 +02:00
call the following function, which delegates to < grammar-token> above.
2021-03-15 02:09:17 +02:00
< / p >
2021-03-19 16:43:02 +02:00
< p class = "commentary" > In the two cases < span class = "extract" > < span class = "extract-syntax" > NAMED_TOKEN_GTC< / span > < / span > and < span class = "extract" > < span class = "extract-syntax" > RELATED_GTC< / span > < / span > the pointer result is
a temporary one telling us which named token, and which relation, respectively:
we then convert those into the result. In all other cases, the < span class = "extract" > < span class = "extract-syntax" > parse_node< / span > < / span >
pointer returned by < grammar-token> is the result.
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CGTokens::determine< / span > < button class = "popup" onclick = "togglePopup('usagePopup13')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup13" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::determine< / span > < / span > :< br / > Command Grammar Lines - < a href = "5-cgl.html#SP16_1" > § 16.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > depth< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "5-cgt.html#SP9" class = "function-link" > < span class = "function-syntax" > CGTokens::is_literal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2021-03-19 16:43:02 +02:00
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "function-syntax" > < grammar-token> < / span > < span class = "plain-syntax" > (< / span > < a href = "5-cgt.html#SP8" class = "function-link" > < span class = "function-syntax" > CGTokens::text< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ));< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < < r> > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > = < / span > < span class = "function-syntax" > < < rp> > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > switch< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NAMED_TOKEN_GTC:< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > defined_by< / span > < span class = "plain-syntax" > = < / span > < a href = "5-pp.html#SP4" class = "function-link" > < span class = "function-syntax" > ParsingPlugin::rvalue_to_command_grammar< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > );< / span >
2021-05-30 01:39:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > = < / span > < a href = "5-cg.html#SP20" class = "function-link" > < span class = "function-syntax" > CommandGrammars::determine< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > defined_by< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > depth< / span > < span class = "plain-syntax" > +1);< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ANY_STUFF_GTC:< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP14_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Make sure the result is a description with one free variable< / span > < span class = "named-paragraph-number" > 14.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-05-30 16:42:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > noun_filter< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NounFilterTokens::new< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > ANY_THINGS_GTC:< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP14_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Make sure the result is a description with one free variable< / span > < span class = "named-paragraph-number" > 14.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-05-30 16:42:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > noun_filter< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NounFilterTokens::new< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > );< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > RELATED_GTC:< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_relation< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Rvalues::to_binary_predicate< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > BinaryPredicates::term_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_relation< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > K_object< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > STUFF_GTC:< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP14_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Make sure the result is a description with one free variable< / span > < span class = "named-paragraph-number" > 14.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2022-10-04 01:26:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > any< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_object_of_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Specifications::to_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > K_thing< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > any< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > noun_filter< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NounFilterTokens::new< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > any< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > default:< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Node::set_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > , < / span > < a href = "5-cgt.html#SP8" class = "function-link" > < span class = "function-syntax" > CGTokens::text< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ));< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > break< / span > < span class = "plain-syntax" > ;< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > }< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > ) < / span > < span class = "named-paragraph-container code-font" > < a href = "5-cgt.html#SP14_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Vet the grammar token determination for parsability at run-time< / span > < span class = "named-paragraph-number" > 14.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > what_token_describes< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > what_token_describes< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP14_1" class = "paragraph-anchor" > < / a > < b > § 14.1. < / b > If the token determines an actual constant value — as it can when it is a
2021-03-19 16:43:02 +02:00
named token which always refers to a specific thing, for example — it is
possible for < span class = "extract" > < span class = "extract-syntax" > result< / span > < / span > not to be a description. Otherwise, though, it has to
be a description which is true or false for any given value, so:
2021-03-15 02:09:17 +02:00
< / p >
2022-08-29 02:11:10 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Make sure the result is a description with one free variable< / span > < span class = "named-paragraph-number" > 14.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > pcalc_prop< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::to_proposition< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > ) & & (< / span > < span class = "identifier-syntax" > Binding::number_free< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > ) != < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "So $P and $D\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > prop< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_FilterQuantified< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "the [any ...] doesn't clearly give a description in the '...' part"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "where I was expecting something like '[any vehicle]'."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_object< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
2021-03-15 02:09:17 +02:00
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP14" > § 14< / a > (three times).< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP14_2" class = "paragraph-anchor" > < / a > < b > § 14.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Vet the grammar token determination for parsability at run-time< / span > < span class = "named-paragraph-number" > 14.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-03-15 02:09:17 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Specifications::is_description< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::to_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > K_understanding< / span > < span class = "plain-syntax" > ) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::eq< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K_understanding< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) & & < / span >
2021-05-14 16:12:46 +03:00
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > RTKindConstructors::request_I6_GPR< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > )) {< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < a href = "5-cgt.html#SP8" class = "function-link" > < span class = "function-syntax" > CGTokens::text< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ));< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_UnparsableKind< / span > < span class = "plain-syntax" > ));< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar token '%2' in the sentence %1 invites me to understand "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "values typed by the player during play but for a kind of value which "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "is beyond my ability. Generally speaking, the allowable kinds of value "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "are number, time, text and any new kind of value you may have created - "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "but not, for instance, scene or rule."< / span > < span class = "plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > result< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Specifications::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K_object< / span > < span class = "plain-syntax" > );< / span >
2021-03-15 02:09:17 +02:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2022-08-29 02:11:10 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-cgt.html#SP14" > § 14< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP15" class = "paragraph-anchor" > < / a > < b > § 15. Scoring. < / b > This score is needed when sorting CG lines in order of applicability: see the
2021-03-19 16:43:02 +02:00
discussion at < a href = "5-cgl.html#SP16" class = "internal" > CGLines::cgl_determine< / a > . The function must return a value
which is at least 0 but strictly less than < span class = "extract" > < span class = "extract-syntax" > CGL_SCORE_TOKEN_RANGE< / span > < / span > . The
general idea is that higher scores cause tokens to take precedence over lower
ones.
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::score_bonus< / span > < button class = "popup" onclick = "togglePopup('usagePopup14')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup14" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::score_bonus< / span > < / span > :< br / > Command Grammar Lines - < a href = "5-cgl.html#SP16_1" > § 16.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ) {< / span >
2021-03-19 16:43:02 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "no cgt"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > == < / span > < span class = "constant-syntax" > UNDETERMINED_GTC< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "undetermined"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > gtc< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > grammar_token_code< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > switch< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > gtc< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > STUFF_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 5< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NOUN_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTI_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIINSIDE_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 2< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIHELD_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 3< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > HELD_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 4< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > CREATURE_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TOPIC_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > case< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > MULTIEXCEPT_TOKEN_GTC:< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 3< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP16" class = "paragraph-anchor" > < / a > < b > § 16. Verification. < / b > This function checks that it's okay to compile the given token, and returns the
2021-05-30 01:39:22 +03:00
kind of value produced, if any is, or < span class = "extract" > < span class = "extract-syntax" > NULL< / span > < / span > if it isn't. The kind returned is
not significant if a problem is generated.
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > CGTokens::verify_and_find_kind< / span > < button class = "popup" onclick = "togglePopup('usagePopup15')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup15" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::verify_and_find_kind< / span > < / span > :< br / > Command Grammar Lines - < a href = "5-cgl.html#SP16_2" > § 16.2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > cg_token< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > code_mode< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > consult_mode< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "5-cgt.html#SP9" class = "function-link" > < span class = "function-syntax" > CGTokens::is_literal< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2021-05-30 01:39:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_relation< / span > < span class = "plain-syntax" > ) {< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-cgt.html#SP17" class = "function-link" > < span class = "function-syntax" > CGTokens::verify_relation_token< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > token_relation< / span > < span class = "plain-syntax" > , < / span > < a href = "5-cgt.html#SP8" class = "function-link" > < span class = "function-syntax" > CGTokens::text< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ));< / span >
2021-05-30 01:39:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > defined_by< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < a href = "5-cg.html#SP18" class = "function-link" > < span class = "function-syntax" > CommandGrammars::get_kind_matched< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > defined_by< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > parse_node< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > spec< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > what_token_describes< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Node::is< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > spec< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > CONSTANT_NT< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Rvalues::is_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > spec< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > K_object< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Rvalues::to_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > spec< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Descriptions::is_complex< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > spec< / span > < span class = "plain-syntax" > )) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < a href = "5-cgt.html#SP8" class = "function-link" > < span class = "function-syntax" > CGTokens::text< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > ));< / span >
2021-05-30 01:39:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_OverComplexToken< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar you give in %1 contains a token which is just too complicated - "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "%2. %PFor instance, a token using subordinate clauses - such as '[a person "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "who can see the player]' will probably not be allowed."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > }< / span >
2022-08-29 02:11:10 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > consult_mode< / span > < span class = "plain-syntax" > ) & & (< / span > < a href = "5-cgt.html#SP9" class = "function-link" > < span class = "function-syntax" > CGTokens::is_topic< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > cgt< / span > < span class = "plain-syntax" > )))< / span >
2021-05-30 01:39:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::sentence_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_TextTokenRestricted< / span > < span class = "plain-syntax" > ),< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "the '[text]' token is not allowed with 'matches' or in table columns"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "as it is just too complicated to sort out: a '[text]' is supposed to "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "extract a snippet from the player's command, but here we already have "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "a snippet, and don't want to snip it further."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Specifications::is_description< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > spec< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Specifications::to_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > spec< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2022-08-29 02:11:10 +03:00
< p class = "commentary firstcommentary" > < a id = "SP17" class = "paragraph-anchor" > < / a > < b > § 17. < / b > Relational tokens are the hardest to cope with at runtime, not least because
2021-05-30 01:39:22 +03:00
Inform has so many different implementations for different relations, and not every
relation can legally be used. The following function polices that — either
doing nothing (okay) or issuing exactly one problem message (not okay).
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-08-29 02:11:10 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > CGTokens::verify_relation_token< / span > < button class = "popup" onclick = "togglePopup('usagePopup16')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup16" > Usage of < span class = "code-font" > < span class = "function-syntax" > CGTokens::verify_relation_token< / span > < / span > :< br / > < a href = "5-cgt.html#SP16" > § 16< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > binary_predicate< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-30 01:39:22 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > R_equality< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (), < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_RelatedByEquality< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar you give in %1 contains a token %2 which would create a circularity. "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "To follow this, I'd have to compute forever."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > R_containment< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > R_containment< / span > < span class = "plain-syntax" > ) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > R_support< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > R_support< / span > < span class = "plain-syntax" > ) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > a_has_b_predicate< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > a_has_b_predicate< / span > < span class = "plain-syntax" > ) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > R_wearing< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > R_wearing< / span > < span class = "plain-syntax" > ) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > R_carrying< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > R_carrying< / span > < span class = "plain-syntax" > ) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > R_incorporation< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > R_incorporation< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > BinaryPredicates::get_test_function< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > )) ||< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_test_function< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > )))) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > BinaryPredicates::term_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_subkind_of_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_GrammarValueRelation< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar you give in %1 contains a token which relates things to values "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "- %2. At present, this is not allowed: only relations between kinds of "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "object can be used in 'Understand' tokens."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ExplicitRelations::get_i6_storage_property< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > reverse< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > BinaryPredicates::is_the_wrong_way_round< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > reverse< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > ExplicitRelations::get_form_of_relation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > Relation_VtoO< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > reverse< / span > < span class = "plain-syntax" > = (< / span > < span class = "identifier-syntax" > reverse< / span > < span class = "plain-syntax" > )?< / span > < span class = "identifier-syntax" > FALSE:TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > reverse< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > BinaryPredicates::term_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 1< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_kind< / span > < span class = "plain-syntax" > (3, < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_GrammarValueRelation2< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar you give in %1 contains a token which relates things "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "to values - %2. (It would need to match the name of %3, which isn't "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "a kind of thing.) At present, this is not allowed: only relations "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "between kinds of object can be used in 'Understand' tokens."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "Trouble with: $2\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOG< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "Whose reversal is: $2\n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > BinaryPredicates::get_reversal< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > bp< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_source< / span > < span class = "plain-syntax" > (1, < / span > < span class = "identifier-syntax" > current_sentence< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::quote_wording< / span > < span class = "plain-syntax" > (2, < / span > < span class = "identifier-syntax" > W< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > StandardProblems::handmade_problem< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Task::syntax_tree< / span > < span class = "plain-syntax" > (),< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > _p_< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PM_GrammarTokenCowardice< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_segment< / span > < span class = "plain-syntax" > (< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "The grammar you give in %1 contains a token which uses a relation I'm unable "< / span >
< span class = "plain-syntax" > < / span > < span class = "string-syntax" > "to test - %2."< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Problems::issue_problem_end< / span > < span class = "plain-syntax" > ();< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2020-05-03 03:01:21 +03:00
< nav role = "progress" > < div class = "progresscontainer" >
2022-09-12 01:33:38 +03:00
< ul class = "progressbar" > < li class = "progressprev" > < a href = "5-cgl.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "P-wtmd.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-im.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-bd.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-sm.html" > 3< / a > < / li > < li class = "progresschapter" > < a href = "4-ap.html" > 4< / a > < / li > < li class = "progresscurrentchapter" > 5< / li > < li class = "progresssection" > < a href = "5-pp.html" > pp< / a > < / li > < li class = "progresssection" > < a href = "5-us.html" > us< / a > < / li > < li class = "progresssection" > < a href = "5-cg.html" > cg< / a > < / li > < li class = "progresssection" > < a href = "5-cgl.html" > cgl< / a > < / li > < li class = "progresscurrent" > cgt< / li > < li class = "progresssection" > < a href = "5-dt.html" > dt< / a > < / li > < li class = "progresssection" > < a href = "5-pv.html" > pv< / a > < / li > < li class = "progresssection" > < a href = "5-ts.html" > ts< / a > < / li > < li class = "progresschapter" > < a href = "6-dlg.html" > 6< / a > < / li > < li class = "progressnext" > < a href = "5-dt.html" > ❯ < / a > < / li > < / ul > < / div >
2020-05-03 03:01:21 +03:00
< / nav > <!-- End of weave -->
2019-03-17 14:40:57 +02:00
2020-03-19 02:11:25 +02:00
< / main >
2019-03-17 14:40:57 +02:00
< / body >
< / html >