MCPcopy Index your code
hub / github.com/antlr/codebuff / subTemplate

Method subTemplate

output/java8/1.4.17/STLexer.java:377–418  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

375 }
376
377 Token subTemplate() {
378 // look for "{ args ID (',' ID)* '|' ..."
379 subtemplateDepth++;
380 int m = input.mark();
381 int curlyStartChar = startCharIndex;
382 int curlyLine = startLine;
383 int curlyPos = startCharPositionInLine;
384 List<Token> argTokens = new ArrayList<Token>();
385 consume();
386 Token curly = newTokenFromPreviousChar(LCURLY);
387 WS();
388 argTokens.add(mID());
389 WS();
390 while ( c==',' ) {
391 consume();
392 argTokens.add(newTokenFromPreviousChar(COMMA));
393 WS();
394 argTokens.add(mID());
395 WS();
396 }
397 WS();
398 if ( c=='|' ) {
399 consume();
400 argTokens.add(newTokenFromPreviousChar(PIPE));
401 if ( isWS(c) ) consume(); // ignore a single whitespace after |
402 //System.out.println("matched args: "+argTokens);
403 for (Token t : argTokens) emit(t);
404 input.release(m);
405 scanningInsideExpr = false;
406 startCharIndex = curlyStartChar; // reset state
407 startLine = curlyLine;
408 startCharPositionInLine = curlyPos;
409 return curly;
410 }
411 input.rewind(m);
412 startCharIndex = curlyStartChar; // reset state
413 startLine = curlyLine;
414 startCharPositionInLine = curlyPos;
415 consume();
416 scanningInsideExpr = false;
417 return curly;
418 }
419
420 Token ESCAPE() {
421 startCharIndex = input.index();

Callers 1

insideMethod · 0.95

Calls 8

consumeMethod · 0.95
WSMethod · 0.95
mIDMethod · 0.95
isWSMethod · 0.95
emitMethod · 0.95
addMethod · 0.65
markMethod · 0.45

Tested by

no test coverage detected