.t.e.s.t. heredoc
LINE_COMMENT    "# Boiled down code snippet from postgresql_adapter.rb which trips up the\n", st=0
LINE_COMMENT    "# lexer; the query call is not properly lexed\n", st=0
MODULE          "module", la=1, st=0
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_BEG,null,null]
CONSTANT        "ActiveRecord", la=1, st=2
WHITESPACE      "\n", la=1, st=RubyLexerState[commandstart,null,EXPR_BEG,null,null]
WHITESPACE      "  ", la=1, st=RubyLexerState[spaceseen,null,EXPR_BEG,null,null]
DEF             "def", la=1, st=6
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_FNAME,null,null]
IDENTIFIER      "indexes", la=1, st=1
LPAREN          "(", st=RubyLexerState[commandstart,null,EXPR_BEG,null,null]
IDENTIFIER      "table_name", la=1, st=3
IDENTIFIER      ",", st=0
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "name", la=1, st=2
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_ARG,null,null]
NONUNARY_OP     "=", la=1, st=0
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_BEG,null,null]
ANY_KEYWORD     "nil", la=1, st=1
RPAREN          ")", st=1
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_END,null,null]
LINE_COMMENT    "#:nodoc:\n", st=RubyLexerState[commandstart|spaceseen,null,EXPR_BEG,null,null]
WHITESPACE      "    ", la=1, st=RubyLexerState[spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "result", la=1, st=2
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_ARG,null,null]
NONUNARY_OP     "=", la=1, st=0
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "query", la=1, st=2
LPAREN          "(", st=RubyLexerState[commandstart,null,EXPR_BEG,null,null]
STRING_BEGIN    "<<-SQL", la=1, st=RubyLexerState[-,null,EXPR_BEG,null,HeredocContext(count=2):end:false,term:HeredocTerm[34,SQL,null,0],end:true,term:HeredocTerm[34,SQL,null,0]]
IDENTIFIER      ",", st=RubyLexerState[-,null,EXPR_BEG,null,HeredocContext(count=2):end:false,term:HeredocTerm[34,SQL,null,0],end:true,term:HeredocTerm[34,SQL,null,0]]
WHITESPACE      " ", la=1, st=RubyLexerState[spaceseen,null,EXPR_BEG,null,HeredocContext(count=2):end:false,term:HeredocTerm[34,SQL,null,0],end:true,term:HeredocTerm[34,SQL,null,0]]
IDENTIFIER      "name", la=1, st=RubyLexerState[-,null,EXPR_ARG,null,HeredocContext(count=2):end:false,term:HeredocTerm[34,SQL,null,0],end:true,term:HeredocTerm[34,SQL,null,0]]
RPAREN          ")", st=RubyLexerState[-,null,EXPR_END,null,HeredocContext(count=2):end:false,term:HeredocTerm[34,SQL,null,0],end:true,term:HeredocTerm[34,SQL,null,0]]
WHITESPACE      "\n", la=1, st=RubyLexerState[commandstart,null,EXPR_BEG,null,HeredocContext(count=2):end:false,term:HeredocTerm[34,SQL,null,0],end:true,term:HeredocTerm[34,SQL,null,0]]
QUOTED_STRING_LITERAL  "      SELECT i.relname, d.indisunique, a.attname\n        FROM pg_class t, pg_class i, pg_index d, pg_attribute a\n       WHERE i.relkind = 'i'\n         AND d.indexrelid = i.oid\n         AND d.indisprimary = 'f'\n         AND t.oid = d.indrelid\n         AND t.relname = '", la=2, st=RubyLexerState[substituting|commandstart,HeredocTerm[34,SQL,null,1],EXPR_BEG,HeredocTermState[1],HeredocContext(count=1):end:true,term:HeredocTerm[34,SQL,null,1]]
STRING_LITERAL  "#{", st=RubyLexerState[embedded|substituting|commandstart,HeredocTerm[34,SQL,null,2],EXPR_BEG,HeredocTermState[2],HeredocContext(count=1):end:true,term:HeredocTerm[34,SQL,null,2]]
EMBEDDED_RUBY   "table_name", la=1, st=RubyLexerState[substituting|commandstart,HeredocTerm[34,SQL,null,1],EXPR_BEG,HeredocTermState[1],HeredocContext(count=1):end:true,term:HeredocTerm[34,SQL,null,1]]
QUOTED_STRING_LITERAL  "}'\n         AND a.attrelid = t.oid\n         AND ( d.indkey[0]=a.attnum OR d.indkey[1]=a.attnum\n            OR d.indkey[2]=a.attnum OR d.indkey[3]=a.attnum\n            OR d.indkey[4]=a.attnum OR d.indkey[5]=a.attnum\n            OR d.indkey[6]=a.attnum OR d.indkey[7]=a.attnum\n            OR d.indkey[8]=a.attnum OR d.indkey[9]=a.attnum )\n      ORDER BY i.relname\n    ", la=4, st=RubyLexerState[substituting|commandstart,HeredocTerm[34,SQL,null,1],EXPR_BEG,HeredocTermState[1],HeredocContext(count=1):end:true,term:HeredocTerm[34,SQL,null,1]]
QUOTED_STRING_END  "SQL\n", st=RubyLexerState[substituting|commandstart,null,EXPR_END,null,null]
WHITESPACE      "  ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_END,null,null]
END             "end", la=1, st=RubyLexerState[substituting,null,EXPR_END,null,null]
WHITESPACE      "\n\n", la=1, st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
WHITESPACE      "  ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
DEF             "def", la=1, st=RubyLexerState[substituting,null,EXPR_FNAME,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_FNAME,null,null]
IDENTIFIER      "columns", la=1, st=RubyLexerState[substituting,null,EXPR_END,null,null]
LPAREN          "(", st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
IDENTIFIER      "table_name", la=1, st=RubyLexerState[substituting,null,EXPR_CMDARG,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "name", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_ARG,null,null]
NONUNARY_OP     "=", la=1, st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
ANY_KEYWORD     "nil", la=1, st=RubyLexerState[substituting,null,EXPR_END,null,null]
RPAREN          ")", st=RubyLexerState[substituting,null,EXPR_END,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_END,null,null]
LINE_COMMENT    "#:nodoc:\n", st=RubyLexerState[substituting|commandstart|spaceseen,null,EXPR_BEG,null,null]
WHITESPACE      "    ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "column_definitions", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
LPAREN          "(", st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
IDENTIFIER      "table_name", la=1, st=RubyLexerState[substituting,null,EXPR_CMDARG,null,null]
RPAREN          ")", st=RubyLexerState[substituting,null,EXPR_END,null,null]
DOT             ".", la=1, st=RubyLexerState[substituting,null,EXPR_DOT,null,null]
IDENTIFIER      "collect", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_ARG,null,null]
DO              "do", la=1, st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "|", la=1, st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
IDENTIFIER      "name", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "type", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "default", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "notnull", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "typmod", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
IDENTIFIER      "|", la=1, st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      "\n", la=1, st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      "      ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
LINE_COMMENT    "# typmod now unused as limit, precision, scale all handled by superclass\n", st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
WHITESPACE      "      ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
CONSTANT        "Column", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
DOT             ".", la=1, st=RubyLexerState[substituting,null,EXPR_DOT,null,null]
IDENTIFIER      "new", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
LPAREN          "(", st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
IDENTIFIER      "name", la=1, st=RubyLexerState[substituting,null,EXPR_CMDARG,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "default_value", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
LPAREN          "(", st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
IDENTIFIER      "default", la=1, st=RubyLexerState[substituting,null,EXPR_CMDARG,null,null]
RPAREN          ")", st=RubyLexerState[substituting,null,EXPR_END,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "translate_field_type", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
LPAREN          "(", st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
IDENTIFIER      "type", la=1, st=RubyLexerState[substituting,null,EXPR_CMDARG,null,null]
RPAREN          ")", st=RubyLexerState[substituting,null,EXPR_END,null,null]
IDENTIFIER      ",", st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
IDENTIFIER      "notnull", la=1, st=RubyLexerState[substituting,null,EXPR_ARG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_ARG,null,null]
NONUNARY_OP     "==", la=1, st=RubyLexerState[substituting,null,EXPR_BEG,null,null]
WHITESPACE      " ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
QUOTED_STRING_BEGIN  """, st=RubyLexerState[substituting,StringTerm[flags=expand,end=",begin=0,nest=0,embed=1],EXPR_BEG,StringTermState[nest=0,embed=1],null]
QUOTED_STRING_LITERAL  "f", la=1, st=RubyLexerState[substituting,StringTerm[flags=expand,end=",begin=0,nest=0,embed=1],EXPR_BEG,StringTermState[nest=0,embed=1],null]
QUOTED_STRING_END  """, st=RubyLexerState[substituting,null,EXPR_END,null,null]
RPAREN          ")", st=RubyLexerState[substituting,null,EXPR_END,null,null]
WHITESPACE      "\n", la=1, st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
WHITESPACE      "    ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
END             "end", la=1, st=RubyLexerState[substituting,null,EXPR_END,null,null]
WHITESPACE      "\n", la=1, st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
WHITESPACE      "  ", la=1, st=RubyLexerState[substituting|spaceseen,null,EXPR_BEG,null,null]
END             "end", la=1, st=RubyLexerState[substituting,null,EXPR_END,null,null]
WHITESPACE      "\n", la=1, st=RubyLexerState[substituting|commandstart,null,EXPR_BEG,null,null]
END             "end", la=1, st=RubyLexerState[substituting,null,EXPR_END,null,null]
----- EOF -----

<Unnamed test>
----- EOF -----

