Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

46
LINES

< > BotCompany Repo | #1025648 // smartParser1_generic

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (4815L/31K).

1  
static L<ExtS> smartParser1_generic(S program, O... _) {
2  
  optPar bool verbose;
3  
  new L<ExtS> out;
4  
  
5  
  // split into paragraphs and unindent
6  
7  
  LS paragraphs = map autoUnindent(map rtrim(tok_splitAtEmptyLines(program)));
8  
  if (verbose) print("Got " + n2(paragraphs, "parapraph"));
9  
10  
  // print the parapraphs
11  
  if (verbose) print(joinWithEmptyLines(map(s -> indentx("> ", s), paragraphs)));
12  
13  
  // throw away comment-only and quoted paragraphs (assume it's a title)
14  
  LS paragraphs2 = antiFilter(paragraphs, s -> 
15  
    isSingleLine(trim(s)) && isQuoted(trim(s)) || countJavaTokens(s) == 0
16  
    || endsWith(rtrim(s), "----"));
17  
  if (verbose) print("Got " + n2(paragraphs2, "filtered paragraph"));
18  
  if (verbose) print(joinWithEmptyLines(map(s -> indentx("> ", s), paragraphs2)));
19  
20  
  // find fact paragraphs
21  
  
22  
  Pair<LS> p1 = filterAntiFilter(s ->
23  
    !isSingleLine(trim(s)) && allLinesAreUnindented(s), paragraphs2);
24  
  LS multiFactParagraphs = p1.a, paragraphs3 = p1.b;
25  
26  
  for (S para : multiFactParagraphs)
27  
    for (S s : tlft(para))
28  
      out.add(ext fact(s));
29  
30  
  // find logic rules
31  
32  
  new LS paragraphs4;
33  
  for (S para : paragraphs3) {
34  
    PairS p = splitAtDoubleArrow_pair(para);
35  
    if (p == null) continue with paragraphs4.add(para);
36  
    out.add(ext logicRule(para));
37  
  }
38  
39  
  if (verbose) pnlStruct("Unparsed - assuming facts", paragraphs4);
40  
41  
  // assume the unparsed stuff consists of facts
42  
  for (S para : paragraphs4)
43  
    out.add(ext fact(para));
44  
  
45  
  ret out;
46  
}

Author comment

Began life as a copy of #1025615

download  show line numbers  debug dex  old transpilations   

Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1025648
Snippet name: smartParser1_generic
Eternal ID of this version: #1025648/3
Text MD5: f01c694e9982addee465a6cf5eb12874
Transpilation MD5: c7abe6c6924c3fbb6109d6e9f432749a
Author: stefan
Category: javax / a.i.
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2019-10-12 17:27:39
Source code size: 1513 bytes / 46 lines
Pitched / IR pitched: No / No
Views / Downloads: 187 / 256
Version history: 2 change(s)
Referenced in: [show references]