Program: 135914
Project: 135914
Buggy source:
public static TLAExpr InnerTokenize(PcalCharReader charReader,boolean isExpr) throws TokenizerException {
  int mode=TLA;
  ncol=charReader.getColumnNumber();
  col=ncol;
  parseExpression=isExpr;
  prevToken="String_Node_Str";
  vspec=new Vector(1000,1000);
  reader=charReader;
  linev=new Vector();
  token="String_Node_Str";
  nextChar=reader.getNextChar();
  parenDepth=0;
  inQuantifier=false;
switch (mode) {
case MODULE:
    state=PROLOG;
  break;
case TLA:
state=START;
break;
default :
PcalDebug.ReportBug("String_Node_Str");
}
;
exprEnd=false;
while ((state != DONE) && !exprEnd) {
switch (state) {
case START:
if (Misc.IsSpace(nextChar)) {
skipNextChar();
gotoStart();
}
 else if (Misc.IsLetter(nextChar)) {
addNextChar();
state=ID;
}
 else if (Misc.IsDigit(nextChar)) {
addNextChar();
state=NUM_OR_ID;
}
 else if (nextChar == '\\') {
addNextChar();
state=BS;
}
 else if (nextChar == '-') {
addNextChar();
state=DASH1;
}
 else if (nextChar == '=') {
addNextChar();
state=EQ1;
}
 else if (nextChar == '(') {
skipNextChar();
state=LEFT_PAREN;
}
 else if (nextChar == '"') {
skipNextChar();
state=STRING;
}
 else if (nextChar == '\n') {
skipNextChar();
startNewLine();
gotoStart();
}
 else if (PcalBuiltInSymbols.IsBuiltInPrefix("String_Node_Str" + nextChar)) {
addNextChar();
state=BUILT_IN;
}
 else if (nextChar == '\t') {
if (mode == MODULE) {
throw new TokenizerException("String_Node_Str");
}
;
state=DONE;
}
 else {
addNextChar();
TokenizingError("String_Node_Str");
}
;
break;
case ID:
if ((token.length() == 3) && (token.equals("String_Node_Str") || token.equals("String_Node_Str"))) {
TokenOut(Token.BUILTIN);
gotoStart();
}
 else if (Misc.IsLetter(nextChar) || Misc.IsDigit(nextChar)) {
addNextChar();
}
 else if (PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
if (token.equals("String_Node_Str")) {
mdepth=mdepth + 1;
}
TokenOut(Token.BUILTIN);
gotoStart();
}
 else {
TokenOut(Token.IDENT);
gotoStart();
}
;
break;
case NUM_OR_ID:
if (Misc.IsDigit(nextChar)) {
addNextChar();
state=NUM_OR_ID;
}
 else if (Misc.IsLetter(nextChar)) {
addNextChar();
state=ID;
}
 else {
TokenOut(Token.NUMBER);
gotoStart();
}
break;
case BS:
if ((nextChar == 'b') || (nextChar == 'B') || (nextChar == 'o')|| (nextChar == 'O')|| (nextChar == 'h')|| (nextChar == 'H')) {
addNextChar();
state=NUM_OR_BI;
}
 else if (Misc.IsLetter(nextChar)) {
state=BSBUILT_IN;
}
 else if (nextChar == '*') {
skipNextChar();
token="String_Node_Str";
state=LINE_COMMENT;
}
 else {
state=BUILT_IN;
}
break;
case NUM_OR_BI:
if (Misc.IsDigit(nextChar)) {
state=NUM;
}
 else {
state=BSBUILT_IN;
}
;
break;
case NUM:
if (Misc.IsDigit(nextChar)) {
addNextChar();
state=NUM;
}
 else if (Misc.IsLetter(nextChar)) {
addNextChar();
if (token.charAt(0) == '\\') {
TokenizingError("String_Node_Str");
}
 else {
state=ID;
}
;
}
 else {
TokenOut(Token.NUMBER);
gotoStart();
}
break;
case BSBUILT_IN:
if (Misc.IsLetter(nextChar) && (nextChar != '_')) {
addNextChar();
state=BSBUILT_IN;
}
 else if (PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
TokenOut(Token.BUILTIN);
gotoStart();
}
 else {
TokenizingError("String_Node_Str");
}
;
break;
case BUILT_IN:
if (PcalBuiltInSymbols.IsBuiltInPrefix(token + nextChar)) {
addNextChar();
}
 else {
if (!PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
reader.backspace();
while (!PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
reader.backspace();
if (token.length() == 0) {
TokenizingError("String_Node_Str");
}
;
token=token.substring(0,token.length() - 1);
}
;
nextChar=reader.getNextChar();
}
;
TokenOut(Token.BUILTIN);
gotoStart();
}
break;
case DASH1:
if (nextChar == '-') {
addNextChar();
state=DASH2;
}
 else {
state=BUILT_IN;
}
break;
case DASH2:
if (nextChar == '-') {
addNextChar();
state=DASH3;
}
 else {
state=BUILT_IN;
}
break;
case DASH3:
if (nextChar == '-') {
addNextChar();
state=DASHES;
}
 else {
TokenizingError("String_Node_Str");
}
break;
case DASHES:
if (nextChar == '-') {
addNextChar();
state=DASHES;
}
 else {
TokenOut(Token.DASHES);
gotoStart();
}
break;
case EQ1:
if (nextChar == '=') {
addNextChar();
state=EQ2;
}
 else {
state=BUILT_IN;
}
break;
case EQ2:
if (nextChar == '=') {
addNextChar();
state=EQ3;
}
 else {
state=BUILT_IN;
}
break;
case EQ3:
if (nextChar == '=') {
addNextChar();
state=EQS;
}
 else {
TokenizingError("String_Node_Str");
}
break;
case EQS:
if (nextChar == '=') {
addNextChar();
state=EQS;
}
 else {
mdepth=mdepth - 1;
TokenOut(Token.END_MODULE);
if ((mdepth > 0) || (mode == TLA)) {
gotoStart();
}
 else if (mdepth == 0) {
state=EPILOG;
}
 else {
throw new TokenizerException("String_Node_Str" + (reader.getLineNumber() + 1));
}
}
break;
case LEFT_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=1;
state=COMMENT;
}
 else {
token="String_Node_Str";
state=BUILT_IN;
}
break;
case STRING:
if (nextChar == '\\') {
addNextChar();
state=ESC_STRING;
}
 else if (nextChar == '"') {
skipNextChar();
TokenOut(Token.STRING);
gotoStart();
}
 else if (PcalBuiltInSymbols.IsStringChar(nextChar)) {
addNextChar();
state=STRING;
}
 else {
addNextChar();
TokenizingError("String_Node_Str");
}
break;
case ESC_STRING:
if ((nextChar == '\"') || (nextChar == '\\') || (nextChar == 't')|| (nextChar == 'n')|| (nextChar == 'f')|| (nextChar == 'r')) {
addNextChar();
state=STRING;
}
 else {
addNextChar();
TokenizingError("String_Node_Str");
}
break;
case LINE_COMMENT:
if (nextChar == '(') {
skipNextChar();
state=LINE_COM_PAREN;
}
 else if ((nextChar == '*') && (cdepth > 0)) {
skipNextChar();
state=LINE_COM_STAR;
}
 else if ((nextChar == '\n') || (nextChar == '\t')) {
CommentTokenOut();
cdepth=0;
gotoStart();
}
 else {
if (cdepth == 0) {
addNextChar();
}
 else {
skipNextChar();
}
;
state=LINE_COMMENT;
}
break;
case LINE_COM_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=cdepth + 1;
state=LINE_COMMENT;
}
 else {
if (cdepth == 0) {
token=token + "String_Node_Str";
}
;
state=LINE_COMMENT;
}
break;
case LINE_COM_STAR:
if (nextChar == ')') {
skipNextChar();
cdepth=cdepth - 1;
PcalDebug.Assert(cdepth >= 0,"String_Node_Str");
state=LINE_COMMENT;
}
 else {
if (cdepth == 0) {
token=token + "String_Node_Str";
}
;
state=LINE_COMMENT;
}
break;
case COMMENT:
if (nextChar == '*') {
skipNextChar();
state=COMMENT_STAR;
}
 else if (nextChar == '(') {
skipNextChar();
state=COMMENT_PAREN;
}
 else if (nextChar == '\n') {
CommentTokenOut();
skipNextChar();
startNewLine();
state=OR_COMMENT;
}
 else if (nextChar == '\t') {
throw new TokenizerException("String_Node_Str");
}
 else {
if (cdepth == 1) {
addNextChar();
}
 else {
skipNextChar();
}
;
}
break;
case COMMENT_STAR:
if (nextChar == ')') {
skipNextChar();
cdepth=cdepth - 1;
if (cdepth == 0) {
CommentTokenOut();
gotoStart();
}
 else {
state=COMMENT;
}
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=COMMENT;
}
break;
case COMMENT_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=cdepth + 1;
state=COMMENT;
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=COMMENT;
}
break;
case OR_COMMENT:
if (nextChar == '*') {
skipNextChar();
state=OR_COMMENT_STAR;
}
 else if (nextChar == '(') {
skipNextChar();
state=OR_COMMENT_PAREN;
}
 else if (nextChar == '\n') {
CommentTokenOut();
skipNextChar();
startNewLine();
state=OR_COMMENT;
}
 else if (nextChar == '\t') {
throw new TokenizerException("String_Node_Str");
}
 else {
if (cdepth == 1) {
addNextChar();
}
 else {
skipNextChar();
}
;
}
break;
case OR_COMMENT_STAR:
if (nextChar == ')') {
skipNextChar();
cdepth=cdepth - 1;
PcalDebug.Assert(cdepth >= 0);
if (cdepth == 0) {
CommentTokenOut();
gotoStart();
}
 else {
state=OR_COMMENT;
}
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=OR_COMMENT;
}
break;
case OR_COMMENT_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=cdepth + 1;
state=OR_COMMENT;
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=OR_COMMENT;
}
break;
case PROLOG:
if (nextChar == '-') {
token1=token;
col1=col;
col=ncol;
token="String_Node_Str";
skipNextChar();
state=PROLOG_DASH;
}
 else if (nextChar == '\n') {
TokenOut(Token.PROLOG);
skipNextChar();
startNewLine();
}
 else if (nextChar == '\t') {
throw new TokenizerException("String_Node_Str");
}
 else {
addNextChar();
}
break;
case PROLOG_DASH:
PcalDebug.Assert(token.length() <= 3);
if (nextChar == '-') {
addNextChar();
if (token.length() == 4) {
state=PROLOG_DASHES;
}
 else {
}
;
}
 else {
token=token1 + token;
col=col1;
state=PROLOG;
}
break;
case PROLOG_DASHES:
if (nextChar == '-') {
addNextChar();
}
 else {
token2=token;
col2=col;
token="String_Node_Str";
col=ncol;
state=PROLOG_SPACES;
}
break;
case PROLOG_SPACES:
if (nextChar == ' ') {
addNextChar();
}
 else if (Misc.IsLetter(nextChar)) {
token3=token;
col3=ncol;
token="String_Node_Str";
state=PROLOG_ID;
}
 else {
token=token1 + token2;
col=col1;
state=PROLOG;
}
break;
case PROLOG_ID:
if (Misc.IsLetter(nextChar)) {
addNextChar();
}
 else if (token.equals("String_Node_Str")) {
token=token1;
col=col1;
TokenOut(Token.PROLOG);
token=token2;
col=col2;
TokenOut(Token.DASHES);
token="String_Node_Str";
col=col3;
TokenOut(Token.BUILTIN);
token="String_Node_Str";
mdepth=1;
gotoStart();
}
 else {
token=token1 + token2 + token3;
col=col1;
state=PROLOG;
}
break;
case EPILOG:
if (nextChar == '\n') {
TokenOut(Token.EPILOG);
skipNextChar();
startNewLine();
}
 else if (nextChar == '\t') {
TokenOut(Token.EPILOG);
state=DONE;
}
 else {
addNextChar();
}
break;
default :
PcalDebug.ReportBug("String_Node_Str");
}
;
}
;
if (nextChar != '\n') {
reader.backspace();
}
;
TLAExpr rval=new TLAExpr(vspec);
rval.normalize();
return rval;
}

Fixed version (ground truth):
public static TLAExpr InnerTokenize(PcalCharReader charReader,boolean isExpr) throws TokenizerException {
  int mode=TLA;
  ncol=charReader.getColumnNumber();
  col=ncol;
  parseExpression=isExpr;
  prevToken="String_Node_Str";
  vspec=new Vector(1000,1000);
  reader=charReader;
  linev=new Vector();
  token="String_Node_Str";
  nextChar=reader.getNextChar();
  parenDepth=0;
  inQuantifier=false;
switch (mode) {
case MODULE:
    state=PROLOG;
  break;
case TLA:
state=START;
break;
default :
PcalDebug.ReportBug("String_Node_Str");
}
;
exprEnd=false;
while ((state != DONE) && !exprEnd) {
switch (state) {
case START:
if (Misc.IsSpace(nextChar)) {
skipNextChar();
gotoStart();
}
 else if (Misc.IsLetter(nextChar)) {
addNextChar();
state=ID;
}
 else if (Misc.IsDigit(nextChar)) {
addNextChar();
state=NUM_OR_ID;
}
 else if (nextChar == '\\') {
addNextChar();
state=BS;
}
 else if (nextChar == '-') {
addNextChar();
state=DASH1;
}
 else if (nextChar == '=') {
addNextChar();
state=EQ1;
}
 else if (nextChar == '(') {
skipNextChar();
state=LEFT_PAREN;
}
 else if (nextChar == '"') {
skipNextChar();
state=STRING;
}
 else if (nextChar == '\n') {
skipNextChar();
startNewLine();
gotoStart();
}
 else if (PcalBuiltInSymbols.IsBuiltInPrefix("String_Node_Str" + nextChar)) {
addNextChar();
state=BUILT_IN;
}
 else if (nextChar == '\t') {
if (mode == MODULE) {
throw new TokenizerException("String_Node_Str");
}
;
state=DONE;
}
 else {
addNextChar();
TokenizingError("String_Node_Str");
}
;
break;
case ID:
if ((token.length() == 3) && (token.equals("String_Node_Str") || token.equals("String_Node_Str"))) {
TokenOut(Token.BUILTIN);
gotoStart();
}
 else if (Misc.IsLetter(nextChar) || Misc.IsDigit(nextChar)) {
addNextChar();
}
 else if (PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
if (token.equals("String_Node_Str")) {
mdepth=mdepth + 1;
}
TokenOut(Token.BUILTIN);
gotoStart();
}
 else {
TokenOut(Token.IDENT);
gotoStart();
}
;
break;
case NUM_OR_ID:
if (Misc.IsDigit(nextChar)) {
addNextChar();
state=NUM_OR_ID;
}
 else if (Misc.IsLetter(nextChar)) {
addNextChar();
state=ID;
}
 else {
TokenOut(Token.NUMBER);
gotoStart();
}
break;
case BS:
if ((nextChar == 'b') || (nextChar == 'B') || (nextChar == 'o')|| (nextChar == 'O')|| (nextChar == 'h')|| (nextChar == 'H')) {
addNextChar();
state=NUM_OR_BI;
}
 else if (Misc.IsLetter(nextChar)) {
state=BSBUILT_IN;
}
 else if (nextChar == '*') {
skipNextChar();
token="String_Node_Str";
state=LINE_COMMENT;
}
 else {
state=BUILT_IN;
}
break;
case NUM_OR_BI:
if (Misc.IsDigit(nextChar)) {
state=NUM;
}
 else {
state=BSBUILT_IN;
}
;
break;
case NUM:
if (Misc.IsDigit(nextChar)) {
addNextChar();
state=NUM;
}
 else if (Misc.IsLetter(nextChar)) {
addNextChar();
if (token.charAt(0) == '\\') {
TokenizingError("String_Node_Str");
}
 else {
state=ID;
}
;
}
 else {
TokenOut(Token.NUMBER);
gotoStart();
}
break;
case BSBUILT_IN:
if (Misc.IsLetter(nextChar) && (nextChar != '_')) {
addNextChar();
state=BSBUILT_IN;
}
 else if (PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
TokenOut(Token.BUILTIN);
gotoStart();
}
 else {
TokenizingError("String_Node_Str");
}
;
break;
case BUILT_IN:
if (PcalBuiltInSymbols.IsBuiltInPrefix(token + nextChar)) {
addNextChar();
}
 else {
if (!PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
reader.backspace();
while (!PcalBuiltInSymbols.IsBuiltInSymbol(token)) {
reader.backspace();
if (token.length() == 0) {
TokenizingError("String_Node_Str");
}
;
token=token.substring(0,token.length() - 1);
}
;
skipNextChar();
}
;
TokenOut(Token.BUILTIN);
gotoStart();
}
break;
case DASH1:
if (nextChar == '-') {
addNextChar();
state=DASH2;
}
 else {
state=BUILT_IN;
}
break;
case DASH2:
if (nextChar == '-') {
addNextChar();
state=DASH3;
}
 else {
state=BUILT_IN;
}
break;
case DASH3:
if (nextChar == '-') {
addNextChar();
state=DASHES;
}
 else {
TokenizingError("String_Node_Str");
}
break;
case DASHES:
if (nextChar == '-') {
addNextChar();
state=DASHES;
}
 else {
TokenOut(Token.DASHES);
gotoStart();
}
break;
case EQ1:
if (nextChar == '=') {
addNextChar();
state=EQ2;
}
 else {
state=BUILT_IN;
}
break;
case EQ2:
if (nextChar == '=') {
addNextChar();
state=EQ3;
}
 else {
state=BUILT_IN;
}
break;
case EQ3:
if (nextChar == '=') {
addNextChar();
state=EQS;
}
 else {
TokenizingError("String_Node_Str");
}
break;
case EQS:
if (nextChar == '=') {
addNextChar();
state=EQS;
}
 else {
mdepth=mdepth - 1;
TokenOut(Token.END_MODULE);
if ((mdepth > 0) || (mode == TLA)) {
gotoStart();
}
 else if (mdepth == 0) {
state=EPILOG;
}
 else {
throw new TokenizerException("String_Node_Str" + (reader.getLineNumber() + 1));
}
}
break;
case LEFT_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=1;
state=COMMENT;
}
 else {
token="String_Node_Str";
state=BUILT_IN;
}
break;
case STRING:
if (nextChar == '\\') {
addNextChar();
state=ESC_STRING;
}
 else if (nextChar == '"') {
skipNextChar();
TokenOut(Token.STRING);
gotoStart();
}
 else if (PcalBuiltInSymbols.IsStringChar(nextChar)) {
addNextChar();
state=STRING;
}
 else {
addNextChar();
TokenizingError("String_Node_Str");
}
break;
case ESC_STRING:
if ((nextChar == '\"') || (nextChar == '\\') || (nextChar == 't')|| (nextChar == 'n')|| (nextChar == 'f')|| (nextChar == 'r')) {
addNextChar();
state=STRING;
}
 else {
addNextChar();
TokenizingError("String_Node_Str");
}
break;
case LINE_COMMENT:
if (nextChar == '(') {
skipNextChar();
state=LINE_COM_PAREN;
}
 else if ((nextChar == '*') && (cdepth > 0)) {
skipNextChar();
state=LINE_COM_STAR;
}
 else if ((nextChar == '\n') || (nextChar == '\t')) {
CommentTokenOut();
cdepth=0;
gotoStart();
}
 else {
if (cdepth == 0) {
addNextChar();
}
 else {
skipNextChar();
}
;
state=LINE_COMMENT;
}
break;
case LINE_COM_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=cdepth + 1;
state=LINE_COMMENT;
}
 else {
if (cdepth == 0) {
token=token + "String_Node_Str";
}
;
state=LINE_COMMENT;
}
break;
case LINE_COM_STAR:
if (nextChar == ')') {
skipNextChar();
cdepth=cdepth - 1;
PcalDebug.Assert(cdepth >= 0,"String_Node_Str");
state=LINE_COMMENT;
}
 else {
if (cdepth == 0) {
token=token + "String_Node_Str";
}
;
state=LINE_COMMENT;
}
break;
case COMMENT:
if (nextChar == '*') {
skipNextChar();
state=COMMENT_STAR;
}
 else if (nextChar == '(') {
skipNextChar();
state=COMMENT_PAREN;
}
 else if (nextChar == '\n') {
CommentTokenOut();
skipNextChar();
startNewLine();
state=OR_COMMENT;
}
 else if (nextChar == '\t') {
throw new TokenizerException("String_Node_Str");
}
 else {
if (cdepth == 1) {
addNextChar();
}
 else {
skipNextChar();
}
;
}
break;
case COMMENT_STAR:
if (nextChar == ')') {
skipNextChar();
cdepth=cdepth - 1;
if (cdepth == 0) {
CommentTokenOut();
gotoStart();
}
 else {
state=COMMENT;
}
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=COMMENT;
}
break;
case COMMENT_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=cdepth + 1;
state=COMMENT;
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=COMMENT;
}
break;
case OR_COMMENT:
if (nextChar == '*') {
skipNextChar();
state=OR_COMMENT_STAR;
}
 else if (nextChar == '(') {
skipNextChar();
state=OR_COMMENT_PAREN;
}
 else if (nextChar == '\n') {
CommentTokenOut();
skipNextChar();
startNewLine();
state=OR_COMMENT;
}
 else if (nextChar == '\t') {
throw new TokenizerException("String_Node_Str");
}
 else {
if (cdepth == 1) {
addNextChar();
}
 else {
skipNextChar();
}
;
}
break;
case OR_COMMENT_STAR:
if (nextChar == ')') {
skipNextChar();
cdepth=cdepth - 1;
PcalDebug.Assert(cdepth >= 0);
if (cdepth == 0) {
CommentTokenOut();
gotoStart();
}
 else {
state=OR_COMMENT;
}
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=OR_COMMENT;
}
break;
case OR_COMMENT_PAREN:
if (nextChar == '*') {
skipNextChar();
cdepth=cdepth + 1;
state=OR_COMMENT;
}
 else {
if (cdepth == 1) {
token=token + "String_Node_Str";
}
;
state=OR_COMMENT;
}
break;
case PROLOG:
if (nextChar == '-') {
token1=token;
col1=col;
col=ncol;
token="String_Node_Str";
skipNextChar();
state=PROLOG_DASH;
}
 else if (nextChar == '\n') {
TokenOut(Token.PROLOG);
skipNextChar();
startNewLine();
}
 else if (nextChar == '\t') {
throw new TokenizerException("String_Node_Str");
}
 else {
addNextChar();
}
break;
case PROLOG_DASH:
PcalDebug.Assert(token.length() <= 3);
if (nextChar == '-') {
addNextChar();
if (token.length() == 4) {
state=PROLOG_DASHES;
}
 else {
}
;
}
 else {
token=token1 + token;
col=col1;
state=PROLOG;
}
break;
case PROLOG_DASHES:
if (nextChar == '-') {
addNextChar();
}
 else {
token2=token;
col2=col;
token="String_Node_Str";
col=ncol;
state=PROLOG_SPACES;
}
break;
case PROLOG_SPACES:
if (nextChar == ' ') {
addNextChar();
}
 else if (Misc.IsLetter(nextChar)) {
token3=token;
col3=ncol;
token="String_Node_Str";
state=PROLOG_ID;
}
 else {
token=token1 + token2;
col=col1;
state=PROLOG;
}
break;
case PROLOG_ID:
if (Misc.IsLetter(nextChar)) {
addNextChar();
}
 else if (token.equals("String_Node_Str")) {
token=token1;
col=col1;
TokenOut(Token.PROLOG);
token=token2;
col=col2;
TokenOut(Token.DASHES);
token="String_Node_Str";
col=col3;
TokenOut(Token.BUILTIN);
token="String_Node_Str";
mdepth=1;
gotoStart();
}
 else {
token=token1 + token2 + token3;
col=col1;
state=PROLOG;
}
break;
case EPILOG:
if (nextChar == '\n') {
TokenOut(Token.EPILOG);
skipNextChar();
startNewLine();
}
 else if (nextChar == '\t') {
TokenOut(Token.EPILOG);
state=DONE;
}
 else {
addNextChar();
}
break;
default :
PcalDebug.ReportBug("String_Node_Str");
}
;
}
;
if (nextChar != '\n') {
reader.backspace();
}
;
TLAExpr rval=new TLAExpr(vspec);
rval.normalize();
return rval;
}