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

77
LINES

< > BotCompany Repo | #1033186 // Tok_MethodDecl

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

Transpiled version (6626L) is out of date.

1  
sclass Tok_MethodDecl {
2  
  LS tok;
3  
  int iStart, iModifiers, iTypeArgs, iType, iEndOfType, iJavaXMod;
4  
  int iName, iOpening, iClosing;
5  
  gettable S name;
6  
  new LS allNames;
7  
  int iBody;
8  
  bool parsed;
9  
  
10  
  *(LS *tok, int *iStart) {
11  
    iOpening = indexOf(tok, iStart, "(");
12  
    if (iOpening < 0) ret;
13  
    iName = iOpening-2;
14  
    name = main get(tok, iName);
15  
    allNames.add(name);
16  
    if (!isIdentifier(name)) ret;
17  
    
18  
    while (eqGet(tok, iName-2, "aka")
19  
      && isIdentifier(main get(tok, iName-2))) {
20  
      iName -= 4;
21  
      name = main get(tok, iName);
22  
      allNames.add(name);
23  
    }
24  
    
25  
    // find end of arguments
26  
    iClosing = findEndOfBracketPart2(tok, iOpening)-1;
27  
    
28  
    // find end of block or semicolon
29  
    iBody = indexOfAny(tok, iClosing, "{", ";");
30  
31  
    // find javax modifiers, return type & modifiers
32  
    iJavaXMod = tok_leftScanJavaxModifiers(tok, iName);
33  
    iEndOfType = iJavaXMod;
34  
    iType = tok_leftScanType(tok, iJavaXMod);
35  
    iTypeArgs = tok_leftScanTypeArgsOpt(tok, iType);
36  
    iModifiers = leftScanModifiers(tok, iTypeArgs);
37  
    
38  
    iStart = iModifiers;
39  
    reverseInPlace(allNames);
40  
    set parsed;
41  
  }
42  
43  
  simplyCached LS args_unparsed() {
44  
    ret tok_parseArgsDeclList2(subList(tok, iOpening+1, iClosing));
45  
  }
46  
    
47  
  // return type
48  
  LS tokType() {
49  
    ret subList(tok, iType-1, iName);
50  
  }
51  
  
52  
  S type() { ret join(tokType()); }
53  
  
54  
  simplyCached bool isVoid() {
55  
    ret containsOneOf(codeTokens(tokType()), javaxVoidAliases());
56  
  }
57  
    
58  
  LS tokModifiers() {
59  
    ret subList(tok, iStart, iName-1);
60  
  }
61  
  
62  
  bool get() { ret parsed; }
63  
  
64  
  simplyCached L<Tok_ArgDecl> argDecls() {
65  
    ret tok_argDecls(subList(tok, iOpening+1, iClosing));
66  
  }
67  
  
68  
  LS argNames() { ret map(argDecls(), a -> a.name); }
69  
  
70  
  bool hasBody() { ret eqGet(tok, iBody, "{"); }
71  
  
72  
  simplyCached int iEndOfBody() {
73  
    ret hasBody() ? tok_scanBlock_idx(tok, iBody) : iBody+2;
74  
  }
75  
  
76  
  int iEnd() { ret iEndOfBody(); }
77  
}

download  show line numbers  debug dex  old transpilations   

Travelled to 3 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj

No comments. add comment

Snippet ID: #1033186
Snippet name: Tok_MethodDecl
Eternal ID of this version: #1033186/22
Text MD5: 9c77199e1ba1cbf48ec3acdafa4d4043
Author: stefan
Category: javax / parsing
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2021-10-16 02:26:42
Source code size: 2011 bytes / 77 lines
Pitched / IR pitched: No / No
Views / Downloads: 158 / 265
Version history: 21 change(s)
Referenced in: [show references]