Added token sets
This commit is contained in:
parent
e5cf5b0385
commit
511fc90b1b
3
Makefile
3
Makefile
@ -22,6 +22,9 @@ dist:
|
|||||||
$(LN) . $(PACKAGE)-$(VERSION)
|
$(LN) . $(PACKAGE)-$(VERSION)
|
||||||
@$(TAR) $(PACKAGE)-$(VERSION).tar.gz \
|
@$(TAR) $(PACKAGE)-$(VERSION).tar.gz \
|
||||||
$(PACKAGE)-$(VERSION)/src/c99.c \
|
$(PACKAGE)-$(VERSION)/src/c99.c \
|
||||||
|
$(PACKAGE)-$(VERSION)/src/tokenset.c \
|
||||||
|
$(PACKAGE)-$(VERSION)/src/c99.h \
|
||||||
|
$(PACKAGE)-$(VERSION)/src/tokenset.h \
|
||||||
$(PACKAGE)-$(VERSION)/src/project.conf \
|
$(PACKAGE)-$(VERSION)/src/project.conf \
|
||||||
$(PACKAGE)-$(VERSION)/project.conf
|
$(PACKAGE)-$(VERSION)/project.conf
|
||||||
$(RM) $(PACKAGE)-$(VERSION)
|
$(RM) $(PACKAGE)-$(VERSION)
|
||||||
|
@ -6,7 +6,7 @@ CC = cc
|
|||||||
CPPFLAGS=
|
CPPFLAGS=
|
||||||
CFLAGSF = -W
|
CFLAGSF = -W
|
||||||
CFLAGS = -Wall -ansi -g
|
CFLAGS = -Wall -ansi -g
|
||||||
LDFLAGSF= -L $(PREFIX)/lib -Wl,-rpath $(PREFIX)/lib -l System
|
LDFLAGSF= -L $(PREFIX)/lib -Wl,-rpath $(PREFIX)/lib -l cpp
|
||||||
RM = rm -f
|
RM = rm -f
|
||||||
MKDIR = mkdir -p
|
MKDIR = mkdir -p
|
||||||
INSTALL = install
|
INSTALL = install
|
||||||
@ -14,15 +14,18 @@ INSTALL = install
|
|||||||
|
|
||||||
all: $(TARGETS)
|
all: $(TARGETS)
|
||||||
|
|
||||||
c99_OBJS = c99.o
|
c99_OBJS = c99.o tokenset.o
|
||||||
c99_CFLAGS = $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
c99_CFLAGS = $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
||||||
|
|
||||||
c99: $(c99_OBJS)
|
c99: $(c99_OBJS)
|
||||||
$(CC) -o c99 $(c99_OBJS) $(LDFLAGSF) $(LDFLAGS)
|
$(CC) -o c99 $(c99_OBJS) $(LDFLAGSF) $(LDFLAGS)
|
||||||
|
|
||||||
c99.o: c99.c
|
c99.o: c99.c c99.h tokenset.h
|
||||||
$(CC) $(c99_CFLAGS) -c c99.c
|
$(CC) $(c99_CFLAGS) -c c99.c
|
||||||
|
|
||||||
|
tokenset.o: tokenset.c c99.h tokenset.h
|
||||||
|
$(CC) $(c99_CFLAGS) -c tokenset.c
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(c99_OBJS)
|
$(RM) $(c99_OBJS)
|
||||||
|
|
||||||
|
81
src/c99.c
81
src/c99.c
@ -13,6 +13,8 @@
|
|||||||
* You should have received a copy of the Creative Commons Attribution-
|
* You should have received a copy of the Creative Commons Attribution-
|
||||||
* NonCommercial-ShareAlike 3.0 along with c99; if not, browse to
|
* NonCommercial-ShareAlike 3.0 along with c99; if not, browse to
|
||||||
* http://creativecommons.org/licenses/by-nc-sa/3.0/ */
|
* http://creativecommons.org/licenses/by-nc-sa/3.0/ */
|
||||||
|
/* FIXME:
|
||||||
|
* - place main() in main.c? */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -21,7 +23,8 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <cpp.h>
|
#include "tokenset.h"
|
||||||
|
#include "c99.h"
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
|
|
||||||
|
|
||||||
@ -44,11 +47,61 @@ typedef struct _Prefs
|
|||||||
#define PREFS_g 0x4
|
#define PREFS_g 0x4
|
||||||
#define PREFS_s 0x8
|
#define PREFS_s 0x8
|
||||||
|
|
||||||
|
typedef struct _C99Operator
|
||||||
|
{
|
||||||
|
C99Code code;
|
||||||
|
char const * string;
|
||||||
|
} C99Operator;
|
||||||
|
|
||||||
|
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
static int _c99(Prefs * prefs, int filec, char * filev[]);
|
static int _c99(Prefs * prefs, int filec, char * filev[]);
|
||||||
|
|
||||||
|
|
||||||
|
/* variables */
|
||||||
|
static C99Operator _operators[] =
|
||||||
|
{
|
||||||
|
{ C99_CODE_KEYWORD_AUTO, "auto" },
|
||||||
|
{ C99_CODE_KEYWORD_BREAK, "break" },
|
||||||
|
{ C99_CODE_KEYWORD_CASE, "case" },
|
||||||
|
{ C99_CODE_KEYWORD_CHAR, "char" },
|
||||||
|
{ C99_CODE_KEYWORD_CONST, "const" },
|
||||||
|
{ C99_CODE_KEYWORD_CONTINUE, "continue" },
|
||||||
|
{ C99_CODE_KEYWORD_DEFAULT, "default" },
|
||||||
|
{ C99_CODE_KEYWORD_DO, "do" },
|
||||||
|
{ C99_CODE_KEYWORD_DOUBLE, "double" },
|
||||||
|
{ C99_CODE_KEYWORD_ELSE, "else" },
|
||||||
|
{ C99_CODE_KEYWORD_ENUM, "enum" },
|
||||||
|
{ C99_CODE_KEYWORD_EXTERN, "extern" },
|
||||||
|
{ C99_CODE_KEYWORD_FLOAT, "float" },
|
||||||
|
{ C99_CODE_KEYWORD_FOR, "for" },
|
||||||
|
{ C99_CODE_KEYWORD_GOTO, "goto" },
|
||||||
|
{ C99_CODE_KEYWORD_IF, "if" },
|
||||||
|
{ C99_CODE_KEYWORD_INLINE, "inline" },
|
||||||
|
{ C99_CODE_KEYWORD_INT, "int" },
|
||||||
|
{ C99_CODE_KEYWORD_LONG, "long" },
|
||||||
|
{ C99_CODE_KEYWORD_REGISTER, "register" },
|
||||||
|
{ C99_CODE_KEYWORD_RESTRICT, "restrict" },
|
||||||
|
{ C99_CODE_KEYWORD_RETURN, "return" },
|
||||||
|
{ C99_CODE_KEYWORD_SHORT, "short" },
|
||||||
|
{ C99_CODE_KEYWORD_SIGNED, "signed" },
|
||||||
|
{ C99_CODE_KEYWORD_SIZEOF, "sizeof" },
|
||||||
|
{ C99_CODE_KEYWORD_STATIC, "static" },
|
||||||
|
{ C99_CODE_KEYWORD_STRUCT, "struct" },
|
||||||
|
{ C99_CODE_KEYWORD_SWITCH, "switch" },
|
||||||
|
{ C99_CODE_KEYWORD_TYPEDEF, "typedef" },
|
||||||
|
{ C99_CODE_KEYWORD_UNION, "union" },
|
||||||
|
{ C99_CODE_KEYWORD_UNSIGNED, "unsigned" },
|
||||||
|
{ C99_CODE_KEYWORD_VOID, "void" },
|
||||||
|
{ C99_CODE_KEYWORD_VOLATILE, "volatile" },
|
||||||
|
{ C99_CODE_KEYWORD_WHILE, "while" },
|
||||||
|
{ C99_CODE_KEYWORD__BOOL, "_Bool" },
|
||||||
|
{ C99_CODE_KEYWORD__COMPLEX, "_Complex" },
|
||||||
|
{ C99_CODE_KEYWORD__IMAGINARY, "_Imaginary" }
|
||||||
|
};
|
||||||
|
static size_t _operators_cnt = sizeof(_operators) / sizeof(*_operators);
|
||||||
|
|
||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
/* c99 */
|
/* c99 */
|
||||||
static int _c99_do(Prefs * prefs, FILE * outfp, char const * infile);
|
static int _c99_do(Prefs * prefs, FILE * outfp, char const * infile);
|
||||||
@ -187,6 +240,32 @@ static int _c99_do_o(Prefs * prefs, FILE * outfp, char const * infile,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* useful */
|
||||||
|
/* c99_scan */
|
||||||
|
int c99_scan(C99 * c99, Token ** token)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
char const * string;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
if((ret = cpp_scan(c99, token)) != 0)
|
||||||
|
return ret;
|
||||||
|
if(token == NULL)
|
||||||
|
return 0;
|
||||||
|
if(token_get_code(*token) != C99_CODE_WORD)
|
||||||
|
return 0;
|
||||||
|
if((string = token_get_string(*token)) == NULL)
|
||||||
|
return 0;
|
||||||
|
for(i = 0; i < _operators_cnt; i++)
|
||||||
|
if(strcmp(_operators[i].string, string) == 0)
|
||||||
|
{
|
||||||
|
token_set_code(*token, _operators[i].code);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* usage */
|
/* usage */
|
||||||
static int _usage(void)
|
static int _usage(void)
|
||||||
{
|
{
|
||||||
|
145
src/c99.h
Normal file
145
src/c99.h
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
/* Copyright (c) 2008 Pierre Pronchery <khorben@defora.org> */
|
||||||
|
/* This file is part of DeforaOS Devel c99 */
|
||||||
|
/* c99 is not free software; you can redistribute it and/or modify it under the
|
||||||
|
* terms of the Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||||
|
* Unported as published by the Creative Commons organization.
|
||||||
|
*
|
||||||
|
* c99 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 Creative Commons Attribution-NonCommercial-
|
||||||
|
* ShareAlike 3.0 Unported license for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the Creative Commons Attribution-
|
||||||
|
* NonCommercial-ShareAlike 3.0 along with c99; if not, browse to
|
||||||
|
* http://creativecommons.org/licenses/by-nc-sa/3.0/ */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef C99_C99_H
|
||||||
|
# define C99_C99_H
|
||||||
|
|
||||||
|
# include <cpp.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* C99 */
|
||||||
|
/* protected */
|
||||||
|
/* types */
|
||||||
|
typedef Cpp C99;
|
||||||
|
|
||||||
|
typedef enum _C99Code
|
||||||
|
{
|
||||||
|
C99_CODE_NULL = CPP_CODE_NULL,
|
||||||
|
C99_CODE_COMMA = CPP_CODE_COMMA,
|
||||||
|
C99_CODE_DQUOTE = CPP_CODE_DQUOTE,
|
||||||
|
C99_CODE_META_DEFINE = CPP_CODE_META_DEFINE,
|
||||||
|
C99_CODE_META_ELIF = CPP_CODE_META_ELIF,
|
||||||
|
C99_CODE_META_ELSE = CPP_CODE_META_ELSE,
|
||||||
|
C99_CODE_META_ENDIF = CPP_CODE_META_ENDIF,
|
||||||
|
C99_CODE_META_ERROR = CPP_CODE_META_ERROR,
|
||||||
|
C99_CODE_META_IF = CPP_CODE_META_IF,
|
||||||
|
C99_CODE_META_IFDEF = CPP_CODE_META_IFDEF,
|
||||||
|
C99_CODE_META_IFNDEF = CPP_CODE_META_IFNDEF,
|
||||||
|
C99_CODE_META_INCLUDE = CPP_CODE_META_INCLUDE,
|
||||||
|
C99_CODE_META_LINE = CPP_CODE_META_LINE,
|
||||||
|
C99_CODE_META_PRAGMA = CPP_CODE_META_PRAGMA,
|
||||||
|
C99_CODE_META_UNDEF = CPP_CODE_META_UNDEF,
|
||||||
|
C99_CODE_META_WARNING = CPP_CODE_META_WARNING,
|
||||||
|
C99_CODE_OPERATOR_AEQUALS = CPP_CODE_OPERATOR_AEQUALS,
|
||||||
|
C99_CODE_OPERATOR_AMPERSAND = CPP_CODE_OPERATOR_AMPERSAND,
|
||||||
|
C99_CODE_OPERATOR_BAR = CPP_CODE_OPERATOR_BAR,
|
||||||
|
C99_CODE_OPERATOR_BEQUALS = CPP_CODE_OPERATOR_BEQUALS,
|
||||||
|
C99_CODE_OPERATOR_COLON = CPP_CODE_OPERATOR_COLON,
|
||||||
|
C99_CODE_OPERATOR_DAMPERSAND = CPP_CODE_OPERATOR_DAMPERSAND,
|
||||||
|
C99_CODE_OPERATOR_DBAR = CPP_CODE_OPERATOR_DBAR,
|
||||||
|
C99_CODE_OPERATOR_DEQUALS = CPP_CODE_OPERATOR_DEQUALS,
|
||||||
|
C99_CODE_OPERATOR_DGEQUALS = CPP_CODE_OPERATOR_DGEQUALS,
|
||||||
|
C99_CODE_OPERATOR_DGREATER = CPP_CODE_OPERATOR_DGREATER,
|
||||||
|
C99_CODE_OPERATOR_DHASH = CPP_CODE_OPERATOR_DHASH,
|
||||||
|
C99_CODE_OPERATOR_DIVIDE = CPP_CODE_OPERATOR_DIVIDE,
|
||||||
|
C99_CODE_OPERATOR_DLEQUALS = CPP_CODE_OPERATOR_DLEQUALS,
|
||||||
|
C99_CODE_OPERATOR_DLESS = CPP_CODE_OPERATOR_DLESS,
|
||||||
|
C99_CODE_OPERATOR_DMINUS = CPP_CODE_OPERATOR_DMINUS,
|
||||||
|
C99_CODE_OPERATOR_DOT = CPP_CODE_OPERATOR_DOT,
|
||||||
|
C99_CODE_OPERATOR_DOTDOTDOT = CPP_CODE_OPERATOR_DOTDOTDOT,
|
||||||
|
C99_CODE_OPERATOR_DPLUS = CPP_CODE_OPERATOR_DPLUS,
|
||||||
|
C99_CODE_OPERATOR_EQUALS = CPP_CODE_OPERATOR_EQUALS,
|
||||||
|
C99_CODE_OPERATOR_GEQUALS = CPP_CODE_OPERATOR_GEQUALS,
|
||||||
|
C99_CODE_OPERATOR_GREATER = CPP_CODE_OPERATOR_GREATER,
|
||||||
|
C99_CODE_OPERATOR_HASH = CPP_CODE_OPERATOR_HASH,
|
||||||
|
C99_CODE_OPERATOR_INVERSE = CPP_CODE_OPERATOR_INVERSE,
|
||||||
|
C99_CODE_OPERATOR_LBRACE = CPP_CODE_OPERATOR_LBRACE,
|
||||||
|
C99_CODE_OPERATOR_LBRACKET = CPP_CODE_OPERATOR_LBRACKET,
|
||||||
|
C99_CODE_OPERATOR_LEQUALS = CPP_CODE_OPERATOR_LEQUALS,
|
||||||
|
C99_CODE_OPERATOR_LESS = CPP_CODE_OPERATOR_LESS,
|
||||||
|
C99_CODE_OPERATOR_LPAREN = CPP_CODE_OPERATOR_LPAREN,
|
||||||
|
C99_CODE_OPERATOR_MASK = CPP_CODE_OPERATOR_MASK,
|
||||||
|
C99_CODE_OPERATOR_MEQUALS = CPP_CODE_OPERATOR_MEQUALS,
|
||||||
|
C99_CODE_OPERATOR_MGREATER = CPP_CODE_OPERATOR_MGREATER,
|
||||||
|
C99_CODE_OPERATOR_MINUS = CPP_CODE_OPERATOR_MINUS,
|
||||||
|
C99_CODE_OPERATOR_MODEQUALS = CPP_CODE_OPERATOR_MODEQUALS,
|
||||||
|
C99_CODE_OPERATOR_MODULO = CPP_CODE_OPERATOR_MODULO,
|
||||||
|
C99_CODE_OPERATOR_MORE = CPP_CODE_OPERATOR_MORE,
|
||||||
|
C99_CODE_OPERATOR_NEQUALS = CPP_CODE_OPERATOR_NEQUALS,
|
||||||
|
C99_CODE_OPERATOR_NOT = CPP_CODE_OPERATOR_NOT,
|
||||||
|
C99_CODE_OPERATOR_OR = CPP_CODE_OPERATOR_OR,
|
||||||
|
C99_CODE_OPERATOR_PEQUALS = CPP_CODE_OPERATOR_PEQUALS,
|
||||||
|
C99_CODE_OPERATOR_PLUS = CPP_CODE_OPERATOR_PLUS,
|
||||||
|
C99_CODE_OPERATOR_QUESTION = CPP_CODE_OPERATOR_QUESTION,
|
||||||
|
C99_CODE_OPERATOR_RBRACE = CPP_CODE_OPERATOR_RBRACE,
|
||||||
|
C99_CODE_OPERATOR_RBRACKET = CPP_CODE_OPERATOR_RBRACKET,
|
||||||
|
C99_CODE_OPERATOR_RPAREN = CPP_CODE_OPERATOR_RPAREN,
|
||||||
|
C99_CODE_OPERATOR_SEMICOLON = CPP_CODE_OPERATOR_SEMICOLON,
|
||||||
|
C99_CODE_OPERATOR_TEQUALS = CPP_CODE_OPERATOR_TEQUALS,
|
||||||
|
C99_CODE_OPERATOR_TILDE = CPP_CODE_OPERATOR_TILDE,
|
||||||
|
C99_CODE_OPERATOR_TIMES = CPP_CODE_OPERATOR_TIMES,
|
||||||
|
C99_CODE_OPERATOR_XEQUALS = CPP_CODE_OPERATOR_XEQUALS,
|
||||||
|
C99_CODE_OPERATOR_XOR = CPP_CODE_OPERATOR_XOR,
|
||||||
|
C99_CODE_SQUOTE = CPP_CODE_SQUOTE,
|
||||||
|
C99_CODE_WHITESPACE = CPP_CODE_WHITESPACE,
|
||||||
|
C99_CODE_WORD = CPP_CODE_WORD,
|
||||||
|
C99_CODE_KEYWORD_AUTO,
|
||||||
|
C99_CODE_KEYWORD_BREAK,
|
||||||
|
C99_CODE_KEYWORD_CASE,
|
||||||
|
C99_CODE_KEYWORD_CHAR,
|
||||||
|
C99_CODE_KEYWORD_CONST,
|
||||||
|
C99_CODE_KEYWORD_CONTINUE,
|
||||||
|
C99_CODE_KEYWORD_DEFAULT,
|
||||||
|
C99_CODE_KEYWORD_DO,
|
||||||
|
C99_CODE_KEYWORD_DOUBLE,
|
||||||
|
C99_CODE_KEYWORD_ELSE,
|
||||||
|
C99_CODE_KEYWORD_ENUM,
|
||||||
|
C99_CODE_KEYWORD_EXTERN,
|
||||||
|
C99_CODE_KEYWORD_FLOAT,
|
||||||
|
C99_CODE_KEYWORD_FOR,
|
||||||
|
C99_CODE_KEYWORD_GOTO,
|
||||||
|
C99_CODE_KEYWORD_IF,
|
||||||
|
C99_CODE_KEYWORD_INLINE,
|
||||||
|
C99_CODE_KEYWORD_INT,
|
||||||
|
C99_CODE_KEYWORD_LONG,
|
||||||
|
C99_CODE_KEYWORD_REGISTER,
|
||||||
|
C99_CODE_KEYWORD_RESTRICT,
|
||||||
|
C99_CODE_KEYWORD_RETURN,
|
||||||
|
C99_CODE_KEYWORD_SHORT,
|
||||||
|
C99_CODE_KEYWORD_SIGNED,
|
||||||
|
C99_CODE_KEYWORD_SIZEOF,
|
||||||
|
C99_CODE_KEYWORD_STATIC,
|
||||||
|
C99_CODE_KEYWORD_STRUCT,
|
||||||
|
C99_CODE_KEYWORD_SWITCH,
|
||||||
|
C99_CODE_KEYWORD_TYPEDEF,
|
||||||
|
C99_CODE_KEYWORD_UNION,
|
||||||
|
C99_CODE_KEYWORD_UNSIGNED,
|
||||||
|
C99_CODE_KEYWORD_VOID,
|
||||||
|
C99_CODE_KEYWORD_VOLATILE,
|
||||||
|
C99_CODE_KEYWORD_WHILE,
|
||||||
|
C99_CODE_KEYWORD__BOOL,
|
||||||
|
C99_CODE_KEYWORD__COMPLEX,
|
||||||
|
C99_CODE_KEYWORD__IMAGINARY
|
||||||
|
} C99Code;
|
||||||
|
|
||||||
|
|
||||||
|
/* functions */
|
||||||
|
/* useful */
|
||||||
|
int c99_scan(C99 * c99, Token ** token);
|
||||||
|
|
||||||
|
#endif /* !C99_C99_H */
|
@ -1,8 +1,15 @@
|
|||||||
targets=c99
|
targets=c99
|
||||||
cflags_force=-W
|
cflags_force=-W
|
||||||
cflags=-Wall -ansi -g
|
cflags=-Wall -ansi -g
|
||||||
ldflags_force=-L $(PREFIX)/lib -Wl,-rpath $(PREFIX)/lib -l System
|
ldflags_force=-L $(PREFIX)/lib -Wl,-rpath $(PREFIX)/lib -l cpp
|
||||||
|
dist=c99.h,tokenset.h
|
||||||
|
|
||||||
[c99]
|
[c99]
|
||||||
type=binary
|
type=binary
|
||||||
sources=c99.c
|
sources=c99.c,tokenset.c
|
||||||
|
|
||||||
|
[c99.c]
|
||||||
|
depends=c99.h,tokenset.h
|
||||||
|
|
||||||
|
[tokenset.c]
|
||||||
|
depends=c99.h,tokenset.h
|
||||||
|
139
src/tokenset.c
Normal file
139
src/tokenset.c
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
/* Copyright (c) 2008 Pierre Pronchery <khorben@defora.org> */
|
||||||
|
/* This file is part of DeforaOS Devel c99 */
|
||||||
|
/* c99 is not free software; you can redistribute it and/or modify it under the
|
||||||
|
* terms of the Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||||
|
* Unported as published by the Creative Commons organization.
|
||||||
|
*
|
||||||
|
* c99 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 Creative Commons Attribution-NonCommercial-
|
||||||
|
* ShareAlike 3.0 Unported license for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the Creative Commons Attribution-
|
||||||
|
* NonCommercial-ShareAlike 3.0 along with c99; if not, browse to
|
||||||
|
* http://creativecommons.org/licenses/by-nc-sa/3.0/ */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "c99.h"
|
||||||
|
#include "tokenset.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* protected */
|
||||||
|
/* variables */
|
||||||
|
/* keyword */
|
||||||
|
static TokenCode _c99set_keyword[] =
|
||||||
|
{
|
||||||
|
C99_CODE_KEYWORD_AUTO,
|
||||||
|
C99_CODE_KEYWORD_BREAK,
|
||||||
|
C99_CODE_KEYWORD_CASE,
|
||||||
|
C99_CODE_KEYWORD_CHAR,
|
||||||
|
C99_CODE_KEYWORD_CONST,
|
||||||
|
C99_CODE_KEYWORD_CONTINUE,
|
||||||
|
C99_CODE_KEYWORD_DEFAULT,
|
||||||
|
C99_CODE_KEYWORD_DO,
|
||||||
|
C99_CODE_KEYWORD_DOUBLE,
|
||||||
|
C99_CODE_KEYWORD_ELSE,
|
||||||
|
C99_CODE_KEYWORD_ENUM,
|
||||||
|
C99_CODE_KEYWORD_EXTERN,
|
||||||
|
C99_CODE_KEYWORD_FLOAT,
|
||||||
|
C99_CODE_KEYWORD_FOR,
|
||||||
|
C99_CODE_KEYWORD_GOTO,
|
||||||
|
C99_CODE_KEYWORD_IF,
|
||||||
|
C99_CODE_KEYWORD_INLINE,
|
||||||
|
C99_CODE_KEYWORD_INT,
|
||||||
|
C99_CODE_KEYWORD_LONG,
|
||||||
|
C99_CODE_KEYWORD_REGISTER,
|
||||||
|
C99_CODE_KEYWORD_RESTRICT,
|
||||||
|
C99_CODE_KEYWORD_RETURN,
|
||||||
|
C99_CODE_KEYWORD_SHORT,
|
||||||
|
C99_CODE_KEYWORD_SIGNED,
|
||||||
|
C99_CODE_KEYWORD_SIZEOF,
|
||||||
|
C99_CODE_KEYWORD_STATIC,
|
||||||
|
C99_CODE_KEYWORD_STRUCT,
|
||||||
|
C99_CODE_KEYWORD_SWITCH,
|
||||||
|
C99_CODE_KEYWORD_TYPEDEF,
|
||||||
|
C99_CODE_KEYWORD_UNION,
|
||||||
|
C99_CODE_KEYWORD_UNSIGNED,
|
||||||
|
C99_CODE_KEYWORD_VOID,
|
||||||
|
C99_CODE_KEYWORD_VOLATILE,
|
||||||
|
C99_CODE_KEYWORD_WHILE,
|
||||||
|
C99_CODE_KEYWORD__BOOL,
|
||||||
|
C99_CODE_KEYWORD__COMPLEX,
|
||||||
|
C99_CODE_KEYWORD__IMAGINARY,
|
||||||
|
C99_CODE_NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
TokenSet c99set_keyword = _c99set_keyword;
|
||||||
|
|
||||||
|
|
||||||
|
/* punctuator */
|
||||||
|
static TokenCode _c99set_punctuator[] =
|
||||||
|
{
|
||||||
|
C99_CODE_OPERATOR_LBRACKET,
|
||||||
|
C99_CODE_OPERATOR_RBRACKET,
|
||||||
|
C99_CODE_OPERATOR_LPAREN,
|
||||||
|
C99_CODE_OPERATOR_RPAREN,
|
||||||
|
C99_CODE_OPERATOR_LBRACE,
|
||||||
|
C99_CODE_OPERATOR_RBRACE,
|
||||||
|
C99_CODE_OPERATOR_DOT,
|
||||||
|
C99_CODE_OPERATOR_MGREATER,
|
||||||
|
C99_CODE_OPERATOR_DPLUS,
|
||||||
|
C99_CODE_OPERATOR_DMINUS,
|
||||||
|
C99_CODE_OPERATOR_AMPERSAND,
|
||||||
|
C99_CODE_OPERATOR_TIMES,
|
||||||
|
C99_CODE_OPERATOR_PLUS,
|
||||||
|
C99_CODE_OPERATOR_MINUS,
|
||||||
|
C99_CODE_OPERATOR_TILDE,
|
||||||
|
C99_CODE_OPERATOR_NOT,
|
||||||
|
C99_CODE_OPERATOR_DIVIDE,
|
||||||
|
C99_CODE_OPERATOR_MODULO,
|
||||||
|
C99_CODE_OPERATOR_DLESS,
|
||||||
|
C99_CODE_OPERATOR_DGREATER,
|
||||||
|
C99_CODE_OPERATOR_LESS,
|
||||||
|
C99_CODE_OPERATOR_GREATER,
|
||||||
|
C99_CODE_OPERATOR_LEQUALS,
|
||||||
|
C99_CODE_OPERATOR_GEQUALS,
|
||||||
|
C99_CODE_OPERATOR_DEQUALS,
|
||||||
|
C99_CODE_OPERATOR_NEQUALS,
|
||||||
|
C99_CODE_OPERATOR_XOR,
|
||||||
|
C99_CODE_OPERATOR_BAR,
|
||||||
|
C99_CODE_OPERATOR_DAMPERSAND,
|
||||||
|
C99_CODE_OPERATOR_DBAR,
|
||||||
|
C99_CODE_OPERATOR_QUESTION,
|
||||||
|
C99_CODE_OPERATOR_COLON,
|
||||||
|
C99_CODE_OPERATOR_SEMICOLON,
|
||||||
|
C99_CODE_OPERATOR_DOTDOTDOT,
|
||||||
|
C99_CODE_OPERATOR_EQUALS,
|
||||||
|
C99_CODE_OPERATOR_TEQUALS,
|
||||||
|
C99_CODE_OPERATOR_DEQUALS, /* FIXME "/=" ambiguity with "==" */
|
||||||
|
C99_CODE_OPERATOR_MODEQUALS,
|
||||||
|
C99_CODE_OPERATOR_PEQUALS,
|
||||||
|
C99_CODE_OPERATOR_MEQUALS,
|
||||||
|
C99_CODE_OPERATOR_DLEQUALS,
|
||||||
|
C99_CODE_OPERATOR_DGEQUALS,
|
||||||
|
C99_CODE_OPERATOR_AEQUALS,
|
||||||
|
C99_CODE_OPERATOR_XEQUALS,
|
||||||
|
C99_CODE_OPERATOR_BEQUALS,
|
||||||
|
C99_CODE_COMMA,
|
||||||
|
C99_CODE_OPERATOR_HASH,
|
||||||
|
C99_CODE_OPERATOR_DHASH,
|
||||||
|
C99_CODE_NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
TokenSet c99set_punctuator = _c99set_punctuator;
|
||||||
|
|
||||||
|
|
||||||
|
/* storage class specifier */
|
||||||
|
static TokenCode _c99set_storage_class_specifier[] =
|
||||||
|
{
|
||||||
|
C99_CODE_KEYWORD_TYPEDEF,
|
||||||
|
C99_CODE_KEYWORD_EXTERN,
|
||||||
|
C99_CODE_KEYWORD_STATIC,
|
||||||
|
C99_CODE_KEYWORD_AUTO,
|
||||||
|
C99_CODE_KEYWORD_REGISTER,
|
||||||
|
C99_CODE_NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
TokenSet c99set_storage_class_specifier = _c99set_storage_class_specifier;
|
30
src/tokenset.h
Normal file
30
src/tokenset.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* $Id$ */
|
||||||
|
/* Copyright (c) 2008 Pierre Pronchery <khorben@defora.org> */
|
||||||
|
/* This file is part of DeforaOS Devel c99 */
|
||||||
|
/* c99 is not free software; you can redistribute it and/or modify it under the
|
||||||
|
* terms of the Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||||
|
* Unported as published by the Creative Commons organization.
|
||||||
|
*
|
||||||
|
* c99 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 Creative Commons Attribution-NonCommercial-
|
||||||
|
* ShareAlike 3.0 Unported license for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the Creative Commons Attribution-
|
||||||
|
* NonCommercial-ShareAlike 3.0 along with c99; if not, browse to
|
||||||
|
* http://creativecommons.org/licenses/by-nc-sa/3.0/ */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef C99_TOKENSET_H
|
||||||
|
# define C99_TOKENSET_H
|
||||||
|
|
||||||
|
# include <System.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* protected */
|
||||||
|
extern TokenSet c99set_keyword;
|
||||||
|
extern TokenSet c99set_punctuator;
|
||||||
|
extern TokenSet c99set_storage_class_specifier;
|
||||||
|
|
||||||
|
#endif /* !C99_TOKENSET_H */
|
Loading…
Reference in New Issue
Block a user