/* CLexer.java is a generated file. You probably want to * edit CLexer.lex to make changes. Use JFlex to generate it. * To generate CLexer.java * Install JFlex v1.3.2 or later. * Once JFlex is in your classpath run
* java JFlex.Main CLexer.lex
* You will then have a file called CLexer.java */ /* * This file is part of a syntax * highlighting package. * Copyright (C) 1999-2003 Stephen Ostermiller * http://ostermiller.org/contact.pl?regarding=Syntax+Highlighting * Copyright (C) 2003 Elliott Hughes * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See COPYING.TXT for details. */ package com.Ostermiller.Syntax.Lexer; import java.io.*; /** * CLexer is a c language lexer. Created with JFlex. An example of how it is used: * *
 *  CLexer shredder = new CLexer(System.in);
 *  CToken t;
 *  while ((t = shredder.getNextToken()) != null){
 *      System.out.println(t);
 *  }
 *  
*
* * @see CToken */ %% %public %class CLexer %implements Lexer %function getNextToken %type Token %{ private int lastToken; private int nextState=YYINITIAL; /** * next Token method that allows you to control if whitespace and comments are * returned as tokens. */ public Token getNextToken(boolean returnComments, boolean returnWhiteSpace)throws IOException{ Token t = getNextToken(); while (t != null && ((!returnWhiteSpace && t.isWhiteSpace()) || (!returnComments && t.isComment()))){ t = getNextToken(); } return (t); } /** * Prints out tokens from a file or System.in. * If no arguments are given, System.in will be used for input. * If more arguments are given, the first argument will be used as * the name of the file to use as input * * @param args program arguments, of which the first is a filename */ public static void main(String[] args) { InputStream in; try { if (args.length > 0){ File f = new File(args[0]); if (f.exists()){ if (f.canRead()){ in = new FileInputStream(f); } else { throw new IOException("Could not open " + args[0]); } } else { throw new IOException("Could not find " + args[0]); } } else { in = System.in; } CLexer shredder = new CLexer(in); Token t; while ((t = shredder.getNextToken()) != null) { if (t.getID() != CToken.WHITE_SPACE){ System.out.println(t); } } } catch (IOException e){ System.out.println(e.getMessage()); } } /** * Closes the current input stream, and resets the scanner to read from a new input stream. * All internal variables are reset, the old input stream cannot be reused * (content of the internal buffer is discarded and lost). * The lexical state is set to the initial state. * Subsequent tokens read from the lexer will start with the line, char, and column * values given here. * * @param reader The new input. * @param yyline The line number of the first token. * @param yychar The position (relative to the start of the stream) of the first token. * @param yycolumn The position (relative to the line) of the first token. * @throws IOException if an IOExecption occurs while switching readers. */ public void reset(java.io.Reader reader, int yyline, int yychar, int yycolumn) throws IOException{ yyreset(reader); this.yyline = yyline; this.yychar = yychar; this.yycolumn = yycolumn; } %} %line %char %full %state MIDDLE_OF_LINE %state PREPROCESSOR HASH=("#"|"??=") LBRACKET=("["|"??(") RBRACKET=("]"|"??)") BACKSLASH=([\\]|"??/") CARET=("^"|"??'") LBRACE=("{"|"??<") RBRACE=("}"|"??>") VERTICAL=("|"|"??!") TILDE=("~"|"??-") BooleanLiteral=("true"|"false") HexDigit=([0-9a-fA-F]) Digit=([0-9]) OctalDigit=([0-7]) TetraDigit=([0-3]) NonZeroDigit=([1-9]) Letter=([a-zA-Z_]) BLANK=([ ]) TAB=([\t]) FF=([\f]) EscChar=({BACKSLASH}) CR=([\r]) LF=([\n]) EOL=({CR}|{LF}|{CR}{LF}) WhiteSpace=({BLANK}|{TAB}|{FF}|{EOL}) NonBreakingWhiteSpace=({BLANK}|{TAB}|{FF}) AnyNonSeparator=([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|{HASH}|{BACKSLASH}) OctEscape1=({EscChar}{OctalDigit}) OctEscape2=({EscChar}{OctalDigit}{OctalDigit}) OctEscape3=({EscChar}{TetraDigit}{OctalDigit}{OctalDigit}) OctEscape=({OctEscape1}|{OctEscape2}|{OctEscape3}) HexEscape=({EscChar}[x|X]{HexDigit}{HexDigit}) Escape=({EscChar}([a]|[b]|[f]|[n]|[r]|[t]|[v]|[\']|[\"]|[\?]|{BACKSLASH}|[0])) Identifier=({Letter}({Letter}|{Digit}|"$")*) ErrorIdentifier=({AnyNonSeparator}+) Comment=("//"[^\r\n]*) TradCommentBegin=("/*") DocCommentBegin =("/**") NonTermStars=([^\*\/]*[\*]+[^\*\/]) TermStars=([\*]+[\/]) CommentText=((([^\*]*[\/])|{NonTermStars})*) CommentEnd=([^\*]*{TermStars}) TradComment=({TradCommentBegin}{CommentText}{CommentEnd}) DocCommentEnd1=([^\/\*]{CommentText}{CommentEnd}) DocCommentEnd2=({NonTermStars}{CommentText}{CommentEnd}) DocComment=({DocCommentBegin}({DocCommentEnd1}|{DocCommentEnd2}|{TermStars}|[\/])) OpenComment=({TradCommentBegin}{CommentText}([^\*]*)([\*]*)) LongSuffix=(([lL][uU]?)|([uU][lL]?)) DecimalNum=(([0]|{NonZeroDigit}{Digit}*){LongSuffix}?) OctalNum=([0]{OctalDigit}*{LongSuffix}?) HexNum=([0]([x]|[X]){HexDigit}{HexDigit}*{LongSuffix}?) Sign=([\+\-]) SignedInt=({Sign}?{Digit}+) Expo=([eE]) ExponentPart=({Expo}{SignedInt}) FloatSuffix=([fFlL]) FloatWDecimal=(({Digit}*[\.]{Digit}+)|({Digit}+[\.]{Digit}*)) Float1=({FloatWDecimal}{ExponentPart}?) Float2=({Digit}+{ExponentPart}) Float=(({Float1}|{Float2}){FloatSuffix}?) ErrorFloat=({Digit}({AnyNonSeparator}|[\.])*) AnyChrChr=([^\'\n\r\\]) TrigraphChar = ({HASH}|{LBRACKET}|{RBRACKET}|{CARET}|{LBRACE}|{RBRACE}|{VERTICAL}|{TILDE}) UnclosedCharacter=([\']({Escape}|{OctEscape}|{HexEscape}|{TrigraphChar}|{AnyChrChr})) Character=({UnclosedCharacter}[\']) MalformedUnclosedCharacter=([\']({AnyChrChr}|({EscChar}[^\n\r]))*) MalformedCharacter=([\'][\']|{MalformedUnclosedCharacter}[\']) AnyStrChr=([^\"\n\r\\\?]) SlashNewLine=({BACKSLASH}{EOL}) FalseTrigraph= (("?"(("?")*)[^\=\(\)\/\'\<\>\!\-\\\?\"\n\r])|("?"[\=\(\)\/\'\<\>\!\-])) UnclosedString=([\"]((((("?")*)({Escape}|{OctEscape}|{HexEscape}|{TrigraphChar}))|{FalseTrigraph}|{AnyStrChr}|{SlashNewLine})*)(("?")*)) String=({UnclosedString}[\"]) MalformedUnclosedString=([\"]([^\"\n\r])*) MalformedString=({MalformedUnclosedString}[\"]) PreProcessorKeyWord=("include"|"include_next"|"define"|"undef"|"if"|"ifdef"|"ifndef"|"else"|"elif"|"endif"|"line"|"pragma"|"error") PreProcessorEscapes=({EscChar}{EOL}|{EscChar}) PreProcessorText=(([^\n\r\/]|{PreProcessorEscapes}|[\/][^\/\*\n\r]|[\/]{PreProcessorEscapes})*) PreProcessorDirective=({HASH}({NonBreakingWhiteSpace}*){PreProcessorKeyWord}{PreProcessorText}) MalformedPreProcessorDirective=({HASH}({NonBreakingWhiteSpace}*)([^\/\n\r\ \t\f\\]*)) %% {PreProcessorDirective} { nextState = PREPROCESSOR; lastToken = CToken.PREPROCESSOR_DIRECTIVE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } {PreProcessorText} { lastToken = CToken.PREPROCESSOR_DIRECTIVE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); return(t); } {MalformedPreProcessorDirective} { nextState = PREPROCESSOR; lastToken = CToken.ERROR_MALFORMED_PREPROCESSOR_DIRECTIVE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "(" { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_LPAREN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ")" { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_RPAREN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {LBRACE} { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_LBRACE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {RBRACE} { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_RBRACE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {LBRACKET} { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_LBRACKET; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {RBRACKET} { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_RBRACKET; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ";" { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_SEMICOLON; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "," { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_COMMA; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "." { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_PERIOD; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "->" { nextState = MIDDLE_OF_LINE; lastToken = CToken.SEPARATOR_ARROW; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ">" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_GREATER_THAN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "<" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_LESS_THAN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ("!"|"not") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_LOGICAL_NOT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ({TILDE}|"compl") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_BITWISE_COMPLIMENT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "?" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_QUESTION; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ":" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_COLON; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "+" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_ADD; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "-" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_SUBTRACT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "*" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_MULTIPLY; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "/" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_DIVIDE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ("&"|"bitand") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_BITWISE_AND; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ({VERTICAL}|"bitor") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_BITWISE_OR; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ({CARET}|"xor") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_BITWISE_XOR; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "%" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_MOD; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "==" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_EQUAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "<=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_LESS_THAN_OR_EQUAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ">=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_GREATER_THAN_OR_EQUAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ("!="|"not_eq") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_NOT_EQUAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {VERTICAL}{VERTICAL} { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_LOGICAL_OR; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ("&&"|"and") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_LOGICAL_AND; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ("||"|"or") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_LOGICAL_OR; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "++" { lastToken = CToken.OPERATOR_INCREMENT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); return (t); } "--" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_DECREMENT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ">>" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_SHIFT_RIGHT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "<<" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_SHIFT_LEFT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "+=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_ADD_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "-=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_SUBTRACT_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "*=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_MULTIPLY_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "/=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_DIVIDE_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ("&="|"and_eq") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_BITWISE_AND_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ({VERTICAL}"="|"or_eq") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_BITWISE_OR_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ({CARET}"="|"xor_eq") { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_BITWISE_XOR_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "%=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_MOD_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "<<=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_SHIFT_LEFT_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ">>=" { nextState = MIDDLE_OF_LINE; lastToken = CToken.OPERATOR_SHIFT_RIGHT_ASSIGN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } "asm" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_ASM; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "auto" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_AUTO; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "break" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_BREAK; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "case" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_CASE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "const" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_CONST; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "continue" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_CONTINUE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "default" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_DEFAULT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "do" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_DO; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "else" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_ELSE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "enum" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_ENUM; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "explicit" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_EXPLICIT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "export" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_EXPLICIT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "extern" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_EXTERN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "for" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_FOR; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "goto" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_GOTO; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "if" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_IF; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "register" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_REGISTER; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "return" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_RETURN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "sizeof" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_SIZEOF; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "static" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_STATIC; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "struct" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_STRUCT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "switch" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_SWITCH; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "typedef" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_TYPEDEF; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "union" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_UNION; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "volatile" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_VOLATILE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "while" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_WHILE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "catch" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_CATCH; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "class" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_CLASS; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "const_cast" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_CONST_CAST; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "delete" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_DELETE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "dynamic_cast" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_DYNAMIC_CAST; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "friend" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_FRIEND; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "inline" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_INLINE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "mutable" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_MUTABLE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "namespace" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_NAMESPACE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "new" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_NEW; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "operator" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_OPERATOR; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "overload" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_OVERLOAD; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "private" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_PRIVATE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "protected" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_PROTECTED; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "public" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_PUBLIC; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "reinterpret_cast" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_REINTERPRET_CAST; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "static_cast" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_STATIC_CAST; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "template" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_TEMPLATE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "this" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_THIS; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "throw" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_THROW; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "try" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_TRY; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "typeid" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_TYPEID; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "typename" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_TYPENAME; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "using" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_USING; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "virtual" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_VIRTUAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "bool" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_BOOL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "char" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_CHAR; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "double" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_DOUBLE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "float" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_FLOAT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "int" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_INT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "long" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_LONG; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "short" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_SHORT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "signed" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_SIGNED; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "unsigned" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_UNSIGNED; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "void" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_VOID; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } "wchar_t" { nextState = MIDDLE_OF_LINE; lastToken = CToken.RESERVED_WORD_WCHAR_T; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return(t); } {BooleanLiteral} { nextState = MIDDLE_OF_LINE; lastToken = CToken.LITERAL_BOOLEAN; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {Identifier} { nextState = MIDDLE_OF_LINE; lastToken = CToken.IDENTIFIER; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {DecimalNum} { nextState = MIDDLE_OF_LINE; lastToken = CToken.LITERAL_INTEGER_DECIMAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {OctalNum} { nextState = MIDDLE_OF_LINE; lastToken = CToken.LITERAL_INTEGER_OCTAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {HexNum} { nextState = MIDDLE_OF_LINE; lastToken = CToken.LITERAL_INTEGER_HEXIDECIMAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {Float} { nextState = MIDDLE_OF_LINE; lastToken = CToken.LITERAL_FLOATING_POINT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {Character} { nextState = MIDDLE_OF_LINE; lastToken = CToken.LITERAL_CHARACTER; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {String} { nextState = MIDDLE_OF_LINE; lastToken = CToken.LITERAL_STRING; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } ({NonBreakingWhiteSpace}+) { lastToken = CToken.WHITE_SPACE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); return (t); } ({WhiteSpace}+) { nextState = YYINITIAL; lastToken = CToken.WHITE_SPACE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {Comment} { nextState = YYINITIAL; lastToken = CToken.COMMENT_END_OF_LINE; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {DocComment} { nextState = MIDDLE_OF_LINE; lastToken = CToken.COMMENT_DOCUMENTATION; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {TradComment} { nextState = MIDDLE_OF_LINE; lastToken = CToken.COMMENT_TRADITIONAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {TradComment} { lastToken = CToken.COMMENT_TRADITIONAL; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); return (t); } {UnclosedString} { /* most of these errors have to be caught down near the end of the file. * This way, previous expressions of the same length have precedence. * This is really useful for catching anything bad by just allowing it * to slip through the cracks. */ nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_UNCLOSED_STRING; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {MalformedUnclosedString} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_MALFORMED_UNCLOSED_STRING; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {MalformedString} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_MALFORMED_STRING; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {UnclosedCharacter} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_UNCLOSED_CHARACTER; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {MalformedUnclosedCharacter} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_MALFORMED_UNCLOSED_CHARACTER; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {MalformedCharacter} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_MALFORMED_CHARACTER; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {ErrorFloat} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_FLOAT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {ErrorIdentifier} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_IDENTIFIER; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); } {OpenComment} { nextState = MIDDLE_OF_LINE; lastToken = CToken.ERROR_UNCLOSED_COMMENT; String text = yytext(); CToken t = (new CToken(lastToken,text,yyline,yychar,yychar+text.length(),nextState)); yybegin(nextState); return (t); }