| |
| /*********************************************************************** |
| * $Id$ |
| * Copyright 2009 Aplix Corporation. All rights reserved. |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| ***********************************************************************/ |
| #ifndef lex_h |
| #define lex_h |
| |
| // starting from "attribute" are the list of names allowed as arguments identifier |
| #define KEYWORDS \ |
| "DOMString\0" \ |
| "ByteString\0" \ |
| "Date\0" \ |
| "RegExp\0" \ |
| "false\0" \ |
| "object\0" \ |
| "true\0" \ |
| "any\0" \ |
| "boolean\0" \ |
| "byte\0" \ |
| "double\0" \ |
| "float\0" \ |
| "Infinity\0" \ |
| "-Infinity\0" \ |
| "iterator\0" \ |
| "long\0" \ |
| "NaN\0" \ |
| "null\0" \ |
| "octet\0" \ |
| "optional\0" \ |
| "or\0" \ |
| "readonly\0" \ |
| "sequence\0" \ |
| "short\0" \ |
| "unsigned\0" \ |
| "void\0" \ |
| "attribute\0" \ |
| "callback\0" \ |
| "const\0" \ |
| "creator\0" \ |
| "deleter\0" \ |
| "dictionary\0" \ |
| "enum\0" \ |
| "exception\0" \ |
| "getter\0" \ |
| "implements\0" \ |
| "inherit\0" \ |
| "interface\0" \ |
| "legacycaller\0" \ |
| "partial\0" \ |
| "serializer\0" \ |
| "setter\0" \ |
| "static\0" \ |
| "stringifier\0" \ |
| "typedef\0" \ |
| "unrestricted\0" |
| |
| |
| enum toktype { |
| TOK_EOF = -1, |
| TOK_BLOCKCOMMENT = 0x80, |
| TOK_INLINECOMMENT, TOK_INTEGER, TOK_FLOAT, TOK_IDENTIFIER, |
| TOK_STRING, TOK_ELLIPSIS, TOK_DOUBLEBRACKET, |
| /* Keywords must be in the same order as above. */ |
| TOK_DOMString, |
| TOK_ByteString, |
| TOK_Date, |
| TOK_RegExp, |
| TOK_false, |
| TOK_object, |
| TOK_true, |
| TOK_any, |
| TOK_boolean, |
| TOK_byte, |
| TOK_double, |
| TOK_float, |
| TOK_infinity, |
| TOK_minusinfinity, |
| TOK_iterator, |
| TOK_long, |
| TOK_NaN, |
| TOK_null, |
| TOK_octet, |
| TOK_optional, |
| TOK_or, |
| TOK_readonly, |
| TOK_sequence, |
| TOK_short, |
| TOK_unsigned, |
| TOK_void, |
| /* Below that line are keywords that are allowed as arguments names */ |
| TOK_attribute, |
| TOK_callback, |
| TOK_const, |
| TOK_creator, |
| TOK_deleter, |
| TOK_dictionary, |
| TOK_enum, |
| TOK_exception, |
| TOK_getter, |
| TOK_implements, |
| TOK_inherit, |
| TOK_interface, |
| TOK_legacycaller, |
| TOK_partial, |
| TOK_serializer, |
| TOK_setter, |
| TOK_static, |
| TOK_stringifier, |
| TOK_typedef, |
| TOK_unrestricted, |
| }; |
| |
| struct tok { |
| enum toktype type; |
| const char *filename; |
| unsigned int linenum; |
| const char *prestart; |
| const char *start; |
| unsigned int len; |
| }; |
| |
| extern const char *filename; |
| extern const char keywords[]; |
| |
| struct node; |
| |
| void readinput(const char *const *argv); |
| struct tok *lex(void); |
| void outputwidl(struct node *node); |
| |
| #endif /* ndef lex_h */ |