diff --git a/bin/template b/bin/template index bb48a395d9..2d390843bf 100755 --- a/bin/template +++ b/bin/template @@ -196,6 +196,6 @@ template("../ext/yarp/extension.c", nodes, cmark) template("../ext/yarp/yarp.c", nodes, cmark) template("../lib/yarp.rb", nodes, rbmark) -pure_template(template: 'bin/templates/token_type.h.erb', write_to: 'ext/yarp/token_type.h', locals: { tokens: tokens }) -pure_template(template: 'bin/templates/token_type.c.erb', write_to: 'ext/yarp/token_type.c', locals: { tokens: tokens }) -pure_template(template: 'bin/templates/node.h.erb', write_to: 'ext/yarp/node.h', locals: { nodes: nodes }) +pure_template(template: 'bin/templates/gen_token_type.h.erb', write_to: 'ext/yarp/gen_token_type.h', locals: { tokens: tokens }) +pure_template(template: 'bin/templates/gen_token_type.c.erb', write_to: 'ext/yarp/gen_token_type.c', locals: { tokens: tokens }) +pure_template(template: 'bin/templates/gen_node.h.erb', write_to: 'ext/yarp/gen_node.h', locals: { nodes: nodes }) diff --git a/bin/templates/node.h.erb b/bin/templates/gen_node.h.erb similarity index 80% rename from bin/templates/node.h.erb rename to bin/templates/gen_node.h.erb index 08be1e1c51..57ce0d6b1d 100644 --- a/bin/templates/node.h.erb +++ b/bin/templates/gen_node.h.erb @@ -1,3 +1,8 @@ +/******************************************************************************/ +/* This file is generated by the bin/template script and should not be */ +/* modified manually. */ +/******************************************************************************/ + #ifndef YARP_NODE_H #define YARP_NODE_H @@ -12,7 +17,7 @@ typedef enum { } yp_node_type_t; struct yp_node; -struct yp_node; + typedef struct yp_node_list { struct yp_node **nodes; size_t size; diff --git a/bin/templates/gen_token_type.c.erb b/bin/templates/gen_token_type.c.erb new file mode 100644 index 0000000000..2f6b958046 --- /dev/null +++ b/bin/templates/gen_token_type.c.erb @@ -0,0 +1,30 @@ +/******************************************************************************/ +/* This file is generated by the bin/template script and should not be */ +/* modified manually. */ +/******************************************************************************/ + +#include "gen_token_type.h" +#include + +const char * +token_type_to_str(yp_token_type_t token_type) +{ + switch (token_type) { +<%- tokens.each do |token| -%> + case YP_TOKEN_<%= token.name %>: + return "<%= token.name %>"; +<%- end -%> + case YP_TOKEN_MAXIMUM: + return "MAXIMUM"; + } +} + +yp_token_type_t +token_type_from_str(const char *str) +{ +<%- tokens.sort_by { |token| [*token.name.split("_"), *5.times.map { "ZZZ" }] }.each do |token| -%> + if (strncmp(str, "<%= token.name %>", <%= token.name.length %>) == 0) return YP_TOKEN_<%= token.name %>; +<%- end -%> + // Fallback + return YP_TOKEN_INVALID; +} diff --git a/bin/templates/gen_token_type.h.erb b/bin/templates/gen_token_type.h.erb new file mode 100644 index 0000000000..a192fd9f4d --- /dev/null +++ b/bin/templates/gen_token_type.h.erb @@ -0,0 +1,19 @@ +/******************************************************************************/ +/* This file is generated by the bin/template script and should not be */ +/* modified manually. */ +/******************************************************************************/ + +#ifndef YARP_TOKEN_TYPE_H +#define YARP_TOKEN_TYPE_H + +typedef enum yp_token_type { +<%- tokens.each do |token| -%> + <%= token.declaration %> +<%- end -%> + YP_TOKEN_MAXIMUM, // the maximum token value +} yp_token_type_t; + +const char *token_type_to_str(yp_token_type_t token_type); +yp_token_type_t token_type_from_str(const char *str); + +#endif // YARP_TOKEN_TYPE_H diff --git a/bin/templates/token_type.c.erb b/bin/templates/token_type.c.erb deleted file mode 100644 index c94459fcec..0000000000 --- a/bin/templates/token_type.c.erb +++ /dev/null @@ -1,28 +0,0 @@ -#include "token_type.h" -#include - -const char * -token_type_to_str(yp_token_type_t token_type) -{ - switch (token_type) { -<%- tokens.each do |token| -%> - case YP_TOKEN_<%= token.name %>: - return "<%= token.name %>"; -<%- end -%> - case YP_TOKEN_MAXIMUM: - return "MAXIMUM"; - } -} - -yp_token_type_t -token_type_from_str(const char *s) -{ -<%- tokens.each do |token| -%> - if (strcmp(s, "<%= token.name %>") == 0) { - return YP_TOKEN_<%= token.name %>; - } -<%- end -%> - - // Fallback - return YP_TOKEN_INVALID; -} diff --git a/bin/templates/token_type.h.erb b/bin/templates/token_type.h.erb deleted file mode 100644 index 556bec2ee2..0000000000 --- a/bin/templates/token_type.h.erb +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef YARP_TOKEN_TYPE_H -#define YARP_TOKEN_TYPE_H - -typedef enum yp_token_type { -<%- tokens.each do |token| -%> - <%= token.declaration %> -<%- end -%> - YP_TOKEN_MAXIMUM, // the maximum token value -} yp_token_type_t; - -const char *token_type_to_str(yp_token_type_t token_type); -yp_token_type_t token_type_from_str(const char *s); - -#endif // YARP_TOKEN_TYPE_H diff --git a/ext/yarp/extension.c b/ext/yarp/extension.c index a03da4adbe..e76e4f1ed4 100644 --- a/ext/yarp/extension.c +++ b/ext/yarp/extension.c @@ -1,4 +1,4 @@ -#include "token_type.h" +#include "gen_token_type.h" #include "yarp.h" #include diff --git a/ext/yarp/node.h b/ext/yarp/gen_node.h similarity index 91% rename from ext/yarp/node.h rename to ext/yarp/gen_node.h index f61f21c895..e2d15247c0 100644 --- a/ext/yarp/node.h +++ b/ext/yarp/gen_node.h @@ -1,3 +1,8 @@ +/******************************************************************************/ +/* This file is generated by the bin/template script and should not be */ +/* modified manually. */ +/******************************************************************************/ + #ifndef YARP_NODE_H #define YARP_NODE_H @@ -28,7 +33,7 @@ typedef enum { } yp_node_type_t; struct yp_node; -struct yp_node; + typedef struct yp_node_list { struct yp_node **nodes; size_t size; diff --git a/ext/yarp/gen_token_type.c b/ext/yarp/gen_token_type.c new file mode 100644 index 0000000000..73f07a903e --- /dev/null +++ b/ext/yarp/gen_token_type.c @@ -0,0 +1,432 @@ +/******************************************************************************/ +/* This file is generated by the bin/template script and should not be */ +/* modified manually. */ +/******************************************************************************/ + +#include "gen_token_type.h" +#include + +const char * +token_type_to_str(yp_token_type_t token_type) { + switch (token_type) { + case YP_TOKEN_EOF: + return "EOF"; + case YP_TOKEN_INVALID: + return "INVALID"; + case YP_TOKEN_AMPERSAND: + return "AMPERSAND"; + case YP_TOKEN_AMPERSAND_AMPERSAND: + return "AMPERSAND_AMPERSAND"; + case YP_TOKEN_AMPERSAND_AMPERSAND_EQUAL: + return "AMPERSAND_AMPERSAND_EQUAL"; + case YP_TOKEN_AMPERSAND_EQUAL: + return "AMPERSAND_EQUAL"; + case YP_TOKEN_BACK_REFERENCE: + return "BACK_REFERENCE"; + case YP_TOKEN_BACKTICK: + return "BACKTICK"; + case YP_TOKEN_BANG: + return "BANG"; + case YP_TOKEN_BANG_AT: + return "BANG_AT"; + case YP_TOKEN_BANG_EQUAL: + return "BANG_EQUAL"; + case YP_TOKEN_BANG_TILDE: + return "BANG_TILDE"; + case YP_TOKEN_BRACE_LEFT: + return "BRACE_LEFT"; + case YP_TOKEN_BRACE_RIGHT: + return "BRACE_RIGHT"; + case YP_TOKEN_BRACKET_LEFT: + return "BRACKET_LEFT"; + case YP_TOKEN_BRACKET_LEFT_RIGHT: + return "BRACKET_LEFT_RIGHT"; + case YP_TOKEN_BRACKET_RIGHT: + return "BRACKET_RIGHT"; + case YP_TOKEN_CARET: + return "CARET"; + case YP_TOKEN_CARET_EQUAL: + return "CARET_EQUAL"; + case YP_TOKEN_CHARACTER_LITERAL: + return "CHARACTER_LITERAL"; + case YP_TOKEN_CLASS_VARIABLE: + return "CLASS_VARIABLE"; + case YP_TOKEN_COLON: + return "COLON"; + case YP_TOKEN_COLON_COLON: + return "COLON_COLON"; + case YP_TOKEN_COMMA: + return "COMMA"; + case YP_TOKEN_COMMENT: + return "COMMENT"; + case YP_TOKEN_CONSTANT: + return "CONSTANT"; + case YP_TOKEN_DOT: + return "DOT"; + case YP_TOKEN_DOT_DOT: + return "DOT_DOT"; + case YP_TOKEN_DOT_DOT_DOT: + return "DOT_DOT_DOT"; + case YP_TOKEN_EMBDOC_BEGIN: + return "EMBDOC_BEGIN"; + case YP_TOKEN_EMBDOC_END: + return "EMBDOC_END"; + case YP_TOKEN_EMBDOC_LINE: + return "EMBDOC_LINE"; + case YP_TOKEN_EMBEXPR_BEGIN: + return "EMBEXPR_BEGIN"; + case YP_TOKEN_EMBEXPR_END: + return "EMBEXPR_END"; + case YP_TOKEN_EQUAL: + return "EQUAL"; + case YP_TOKEN_EQUAL_EQUAL: + return "EQUAL_EQUAL"; + case YP_TOKEN_EQUAL_EQUAL_EQUAL: + return "EQUAL_EQUAL_EQUAL"; + case YP_TOKEN_EQUAL_GREATER: + return "EQUAL_GREATER"; + case YP_TOKEN_EQUAL_TILDE: + return "EQUAL_TILDE"; + case YP_TOKEN_FLOAT: + return "FLOAT"; + case YP_TOKEN_GREATER: + return "GREATER"; + case YP_TOKEN_GREATER_EQUAL: + return "GREATER_EQUAL"; + case YP_TOKEN_GREATER_GREATER: + return "GREATER_GREATER"; + case YP_TOKEN_GREATER_GREATER_EQUAL: + return "GREATER_GREATER_EQUAL"; + case YP_TOKEN_GLOBAL_VARIABLE: + return "GLOBAL_VARIABLE"; + case YP_TOKEN_IDENTIFIER: + return "IDENTIFIER"; + case YP_TOKEN_IMAGINARY_NUMBER: + return "IMAGINARY_NUMBER"; + case YP_TOKEN_INSTANCE_VARIABLE: + return "INSTANCE_VARIABLE"; + case YP_TOKEN_INTEGER: + return "INTEGER"; + case YP_TOKEN_KEYWORD___ENCODING__: + return "KEYWORD___ENCODING__"; + case YP_TOKEN_KEYWORD___LINE__: + return "KEYWORD___LINE__"; + case YP_TOKEN_KEYWORD___FILE__: + return "KEYWORD___FILE__"; + case YP_TOKEN_KEYWORD_ALIAS: + return "KEYWORD_ALIAS"; + case YP_TOKEN_KEYWORD_AND: + return "KEYWORD_AND"; + case YP_TOKEN_KEYWORD_BEGIN: + return "KEYWORD_BEGIN"; + case YP_TOKEN_KEYWORD_BEGIN_UPCASE: + return "KEYWORD_BEGIN_UPCASE"; + case YP_TOKEN_KEYWORD_BREAK: + return "KEYWORD_BREAK"; + case YP_TOKEN_KEYWORD_CASE: + return "KEYWORD_CASE"; + case YP_TOKEN_KEYWORD_CLASS: + return "KEYWORD_CLASS"; + case YP_TOKEN_KEYWORD_DEF: + return "KEYWORD_DEF"; + case YP_TOKEN_KEYWORD_DEFINED: + return "KEYWORD_DEFINED"; + case YP_TOKEN_KEYWORD_DO: + return "KEYWORD_DO"; + case YP_TOKEN_KEYWORD_ELSE: + return "KEYWORD_ELSE"; + case YP_TOKEN_KEYWORD_ELSIF: + return "KEYWORD_ELSIF"; + case YP_TOKEN_KEYWORD_END: + return "KEYWORD_END"; + case YP_TOKEN_KEYWORD_END_UPCASE: + return "KEYWORD_END_UPCASE"; + case YP_TOKEN_KEYWORD_ENSURE: + return "KEYWORD_ENSURE"; + case YP_TOKEN_KEYWORD_FALSE: + return "KEYWORD_FALSE"; + case YP_TOKEN_KEYWORD_FOR: + return "KEYWORD_FOR"; + case YP_TOKEN_KEYWORD_IF: + return "KEYWORD_IF"; + case YP_TOKEN_KEYWORD_IN: + return "KEYWORD_IN"; + case YP_TOKEN_KEYWORD_MODULE: + return "KEYWORD_MODULE"; + case YP_TOKEN_KEYWORD_NEXT: + return "KEYWORD_NEXT"; + case YP_TOKEN_KEYWORD_NIL: + return "KEYWORD_NIL"; + case YP_TOKEN_KEYWORD_NOT: + return "KEYWORD_NOT"; + case YP_TOKEN_KEYWORD_OR: + return "KEYWORD_OR"; + case YP_TOKEN_KEYWORD_REDO: + return "KEYWORD_REDO"; + case YP_TOKEN_KEYWORD_RESCUE: + return "KEYWORD_RESCUE"; + case YP_TOKEN_KEYWORD_RETRY: + return "KEYWORD_RETRY"; + case YP_TOKEN_KEYWORD_RETURN: + return "KEYWORD_RETURN"; + case YP_TOKEN_KEYWORD_SELF: + return "KEYWORD_SELF"; + case YP_TOKEN_KEYWORD_SUPER: + return "KEYWORD_SUPER"; + case YP_TOKEN_KEYWORD_THEN: + return "KEYWORD_THEN"; + case YP_TOKEN_KEYWORD_TRUE: + return "KEYWORD_TRUE"; + case YP_TOKEN_KEYWORD_UNDEF: + return "KEYWORD_UNDEF"; + case YP_TOKEN_KEYWORD_UNLESS: + return "KEYWORD_UNLESS"; + case YP_TOKEN_KEYWORD_UNTIL: + return "KEYWORD_UNTIL"; + case YP_TOKEN_KEYWORD_WHEN: + return "KEYWORD_WHEN"; + case YP_TOKEN_KEYWORD_WHILE: + return "KEYWORD_WHILE"; + case YP_TOKEN_KEYWORD_YIELD: + return "KEYWORD_YIELD"; + case YP_TOKEN_LABEL: + return "LABEL"; + case YP_TOKEN_LAMBDA_BEGIN: + return "LAMBDA_BEGIN"; + case YP_TOKEN_LESS: + return "LESS"; + case YP_TOKEN_LESS_EQUAL: + return "LESS_EQUAL"; + case YP_TOKEN_LESS_EQUAL_GREATER: + return "LESS_EQUAL_GREATER"; + case YP_TOKEN_LESS_LESS: + return "LESS_LESS"; + case YP_TOKEN_LESS_LESS_EQUAL: + return "LESS_LESS_EQUAL"; + case YP_TOKEN_MINUS: + return "MINUS"; + case YP_TOKEN_MINUS_AT: + return "MINUS_AT"; + case YP_TOKEN_MINUS_EQUAL: + return "MINUS_EQUAL"; + case YP_TOKEN_MINUS_GREATER: + return "MINUS_GREATER"; + case YP_TOKEN_NEWLINE: + return "NEWLINE"; + case YP_TOKEN_NTH_REFERENCE: + return "NTH_REFERENCE"; + case YP_TOKEN_PARENTHESIS_LEFT: + return "PARENTHESIS_LEFT"; + case YP_TOKEN_PARENTHESIS_RIGHT: + return "PARENTHESIS_RIGHT"; + case YP_TOKEN_PERCENT: + return "PERCENT"; + case YP_TOKEN_PERCENT_EQUAL: + return "PERCENT_EQUAL"; + case YP_TOKEN_PERCENT_LOWER_I: + return "PERCENT_LOWER_I"; + case YP_TOKEN_PERCENT_LOWER_W: + return "PERCENT_LOWER_W"; + case YP_TOKEN_PERCENT_LOWER_X: + return "PERCENT_LOWER_X"; + case YP_TOKEN_PERCENT_UPPER_I: + return "PERCENT_UPPER_I"; + case YP_TOKEN_PERCENT_UPPER_W: + return "PERCENT_UPPER_W"; + case YP_TOKEN_PIPE: + return "PIPE"; + case YP_TOKEN_PIPE_EQUAL: + return "PIPE_EQUAL"; + case YP_TOKEN_PIPE_PIPE: + return "PIPE_PIPE"; + case YP_TOKEN_PIPE_PIPE_EQUAL: + return "PIPE_PIPE_EQUAL"; + case YP_TOKEN_PLUS: + return "PLUS"; + case YP_TOKEN_PLUS_AT: + return "PLUS_AT"; + case YP_TOKEN_PLUS_EQUAL: + return "PLUS_EQUAL"; + case YP_TOKEN_QUESTION_MARK: + return "QUESTION_MARK"; + case YP_TOKEN_RATIONAL_NUMBER: + return "RATIONAL_NUMBER"; + case YP_TOKEN_REGEXP_BEGIN: + return "REGEXP_BEGIN"; + case YP_TOKEN_REGEXP_END: + return "REGEXP_END"; + case YP_TOKEN_SEMICOLON: + return "SEMICOLON"; + case YP_TOKEN_SLASH: + return "SLASH"; + case YP_TOKEN_SLASH_EQUAL: + return "SLASH_EQUAL"; + case YP_TOKEN_STAR: + return "STAR"; + case YP_TOKEN_STAR_EQUAL: + return "STAR_EQUAL"; + case YP_TOKEN_STAR_STAR: + return "STAR_STAR"; + case YP_TOKEN_STAR_STAR_EQUAL: + return "STAR_STAR_EQUAL"; + case YP_TOKEN_STRING_BEGIN: + return "STRING_BEGIN"; + case YP_TOKEN_STRING_CONTENT: + return "STRING_CONTENT"; + case YP_TOKEN_STRING_END: + return "STRING_END"; + case YP_TOKEN_SYMBOL_BEGIN: + return "SYMBOL_BEGIN"; + case YP_TOKEN_TILDE: + return "TILDE"; + case YP_TOKEN_TILDE_AT: + return "TILDE_AT"; + case YP_TOKEN_WORDS_SEP: + return "WORDS_SEP"; + case YP_TOKEN_MAXIMUM: + return "MAXIMUM"; + } +} + +yp_token_type_t +token_type_from_str(const char *str) { + if (strncmp(str, "AMPERSAND_AMPERSAND_EQUAL", 25) == 0) return YP_TOKEN_AMPERSAND_AMPERSAND_EQUAL; + if (strncmp(str, "AMPERSAND_AMPERSAND", 19) == 0) return YP_TOKEN_AMPERSAND_AMPERSAND; + if (strncmp(str, "AMPERSAND_EQUAL", 15) == 0) return YP_TOKEN_AMPERSAND_EQUAL; + if (strncmp(str, "AMPERSAND", 9) == 0) return YP_TOKEN_AMPERSAND; + if (strncmp(str, "BACK_REFERENCE", 14) == 0) return YP_TOKEN_BACK_REFERENCE; + if (strncmp(str, "BACKTICK", 8) == 0) return YP_TOKEN_BACKTICK; + if (strncmp(str, "BANG_AT", 7) == 0) return YP_TOKEN_BANG_AT; + if (strncmp(str, "BANG_EQUAL", 10) == 0) return YP_TOKEN_BANG_EQUAL; + if (strncmp(str, "BANG_TILDE", 10) == 0) return YP_TOKEN_BANG_TILDE; + if (strncmp(str, "BANG", 4) == 0) return YP_TOKEN_BANG; + if (strncmp(str, "BRACE_LEFT", 10) == 0) return YP_TOKEN_BRACE_LEFT; + if (strncmp(str, "BRACE_RIGHT", 11) == 0) return YP_TOKEN_BRACE_RIGHT; + if (strncmp(str, "BRACKET_LEFT_RIGHT", 18) == 0) return YP_TOKEN_BRACKET_LEFT_RIGHT; + if (strncmp(str, "BRACKET_LEFT", 12) == 0) return YP_TOKEN_BRACKET_LEFT; + if (strncmp(str, "BRACKET_RIGHT", 13) == 0) return YP_TOKEN_BRACKET_RIGHT; + if (strncmp(str, "CARET_EQUAL", 11) == 0) return YP_TOKEN_CARET_EQUAL; + if (strncmp(str, "CARET", 5) == 0) return YP_TOKEN_CARET; + if (strncmp(str, "CHARACTER_LITERAL", 17) == 0) return YP_TOKEN_CHARACTER_LITERAL; + if (strncmp(str, "CLASS_VARIABLE", 14) == 0) return YP_TOKEN_CLASS_VARIABLE; + if (strncmp(str, "COLON_COLON", 11) == 0) return YP_TOKEN_COLON_COLON; + if (strncmp(str, "COLON", 5) == 0) return YP_TOKEN_COLON; + if (strncmp(str, "COMMA", 5) == 0) return YP_TOKEN_COMMA; + if (strncmp(str, "COMMENT", 7) == 0) return YP_TOKEN_COMMENT; + if (strncmp(str, "CONSTANT", 8) == 0) return YP_TOKEN_CONSTANT; + if (strncmp(str, "DOT_DOT_DOT", 11) == 0) return YP_TOKEN_DOT_DOT_DOT; + if (strncmp(str, "DOT_DOT", 7) == 0) return YP_TOKEN_DOT_DOT; + if (strncmp(str, "DOT", 3) == 0) return YP_TOKEN_DOT; + if (strncmp(str, "EMBDOC_BEGIN", 12) == 0) return YP_TOKEN_EMBDOC_BEGIN; + if (strncmp(str, "EMBDOC_END", 10) == 0) return YP_TOKEN_EMBDOC_END; + if (strncmp(str, "EMBDOC_LINE", 11) == 0) return YP_TOKEN_EMBDOC_LINE; + if (strncmp(str, "EMBEXPR_BEGIN", 13) == 0) return YP_TOKEN_EMBEXPR_BEGIN; + if (strncmp(str, "EMBEXPR_END", 11) == 0) return YP_TOKEN_EMBEXPR_END; + if (strncmp(str, "EOF", 3) == 0) return YP_TOKEN_EOF; + if (strncmp(str, "EQUAL_EQUAL_EQUAL", 17) == 0) return YP_TOKEN_EQUAL_EQUAL_EQUAL; + if (strncmp(str, "EQUAL_EQUAL", 11) == 0) return YP_TOKEN_EQUAL_EQUAL; + if (strncmp(str, "EQUAL_GREATER", 13) == 0) return YP_TOKEN_EQUAL_GREATER; + if (strncmp(str, "EQUAL_TILDE", 11) == 0) return YP_TOKEN_EQUAL_TILDE; + if (strncmp(str, "EQUAL", 5) == 0) return YP_TOKEN_EQUAL; + if (strncmp(str, "FLOAT", 5) == 0) return YP_TOKEN_FLOAT; + if (strncmp(str, "GLOBAL_VARIABLE", 15) == 0) return YP_TOKEN_GLOBAL_VARIABLE; + if (strncmp(str, "GREATER_EQUAL", 13) == 0) return YP_TOKEN_GREATER_EQUAL; + if (strncmp(str, "GREATER_GREATER_EQUAL", 21) == 0) return YP_TOKEN_GREATER_GREATER_EQUAL; + if (strncmp(str, "GREATER_GREATER", 15) == 0) return YP_TOKEN_GREATER_GREATER; + if (strncmp(str, "GREATER", 7) == 0) return YP_TOKEN_GREATER; + if (strncmp(str, "IDENTIFIER", 10) == 0) return YP_TOKEN_IDENTIFIER; + if (strncmp(str, "IMAGINARY_NUMBER", 16) == 0) return YP_TOKEN_IMAGINARY_NUMBER; + if (strncmp(str, "INSTANCE_VARIABLE", 17) == 0) return YP_TOKEN_INSTANCE_VARIABLE; + if (strncmp(str, "INTEGER", 7) == 0) return YP_TOKEN_INTEGER; + if (strncmp(str, "INVALID", 7) == 0) return YP_TOKEN_INVALID; + if (strncmp(str, "KEYWORD___ENCODING__", 20) == 0) return YP_TOKEN_KEYWORD___ENCODING__; + if (strncmp(str, "KEYWORD___FILE__", 16) == 0) return YP_TOKEN_KEYWORD___FILE__; + if (strncmp(str, "KEYWORD___LINE__", 16) == 0) return YP_TOKEN_KEYWORD___LINE__; + if (strncmp(str, "KEYWORD_ALIAS", 13) == 0) return YP_TOKEN_KEYWORD_ALIAS; + if (strncmp(str, "KEYWORD_AND", 11) == 0) return YP_TOKEN_KEYWORD_AND; + if (strncmp(str, "KEYWORD_BEGIN_UPCASE", 20) == 0) return YP_TOKEN_KEYWORD_BEGIN_UPCASE; + if (strncmp(str, "KEYWORD_BEGIN", 13) == 0) return YP_TOKEN_KEYWORD_BEGIN; + if (strncmp(str, "KEYWORD_BREAK", 13) == 0) return YP_TOKEN_KEYWORD_BREAK; + if (strncmp(str, "KEYWORD_CASE", 12) == 0) return YP_TOKEN_KEYWORD_CASE; + if (strncmp(str, "KEYWORD_CLASS", 13) == 0) return YP_TOKEN_KEYWORD_CLASS; + if (strncmp(str, "KEYWORD_DEF", 11) == 0) return YP_TOKEN_KEYWORD_DEF; + if (strncmp(str, "KEYWORD_DEFINED", 15) == 0) return YP_TOKEN_KEYWORD_DEFINED; + if (strncmp(str, "KEYWORD_DO", 10) == 0) return YP_TOKEN_KEYWORD_DO; + if (strncmp(str, "KEYWORD_ELSE", 12) == 0) return YP_TOKEN_KEYWORD_ELSE; + if (strncmp(str, "KEYWORD_ELSIF", 13) == 0) return YP_TOKEN_KEYWORD_ELSIF; + if (strncmp(str, "KEYWORD_END_UPCASE", 18) == 0) return YP_TOKEN_KEYWORD_END_UPCASE; + if (strncmp(str, "KEYWORD_END", 11) == 0) return YP_TOKEN_KEYWORD_END; + if (strncmp(str, "KEYWORD_ENSURE", 14) == 0) return YP_TOKEN_KEYWORD_ENSURE; + if (strncmp(str, "KEYWORD_FALSE", 13) == 0) return YP_TOKEN_KEYWORD_FALSE; + if (strncmp(str, "KEYWORD_FOR", 11) == 0) return YP_TOKEN_KEYWORD_FOR; + if (strncmp(str, "KEYWORD_IF", 10) == 0) return YP_TOKEN_KEYWORD_IF; + if (strncmp(str, "KEYWORD_IN", 10) == 0) return YP_TOKEN_KEYWORD_IN; + if (strncmp(str, "KEYWORD_MODULE", 14) == 0) return YP_TOKEN_KEYWORD_MODULE; + if (strncmp(str, "KEYWORD_NEXT", 12) == 0) return YP_TOKEN_KEYWORD_NEXT; + if (strncmp(str, "KEYWORD_NIL", 11) == 0) return YP_TOKEN_KEYWORD_NIL; + if (strncmp(str, "KEYWORD_NOT", 11) == 0) return YP_TOKEN_KEYWORD_NOT; + if (strncmp(str, "KEYWORD_OR", 10) == 0) return YP_TOKEN_KEYWORD_OR; + if (strncmp(str, "KEYWORD_REDO", 12) == 0) return YP_TOKEN_KEYWORD_REDO; + if (strncmp(str, "KEYWORD_RESCUE", 14) == 0) return YP_TOKEN_KEYWORD_RESCUE; + if (strncmp(str, "KEYWORD_RETRY", 13) == 0) return YP_TOKEN_KEYWORD_RETRY; + if (strncmp(str, "KEYWORD_RETURN", 14) == 0) return YP_TOKEN_KEYWORD_RETURN; + if (strncmp(str, "KEYWORD_SELF", 12) == 0) return YP_TOKEN_KEYWORD_SELF; + if (strncmp(str, "KEYWORD_SUPER", 13) == 0) return YP_TOKEN_KEYWORD_SUPER; + if (strncmp(str, "KEYWORD_THEN", 12) == 0) return YP_TOKEN_KEYWORD_THEN; + if (strncmp(str, "KEYWORD_TRUE", 12) == 0) return YP_TOKEN_KEYWORD_TRUE; + if (strncmp(str, "KEYWORD_UNDEF", 13) == 0) return YP_TOKEN_KEYWORD_UNDEF; + if (strncmp(str, "KEYWORD_UNLESS", 14) == 0) return YP_TOKEN_KEYWORD_UNLESS; + if (strncmp(str, "KEYWORD_UNTIL", 13) == 0) return YP_TOKEN_KEYWORD_UNTIL; + if (strncmp(str, "KEYWORD_WHEN", 12) == 0) return YP_TOKEN_KEYWORD_WHEN; + if (strncmp(str, "KEYWORD_WHILE", 13) == 0) return YP_TOKEN_KEYWORD_WHILE; + if (strncmp(str, "KEYWORD_YIELD", 13) == 0) return YP_TOKEN_KEYWORD_YIELD; + if (strncmp(str, "LABEL", 5) == 0) return YP_TOKEN_LABEL; + if (strncmp(str, "LAMBDA_BEGIN", 12) == 0) return YP_TOKEN_LAMBDA_BEGIN; + if (strncmp(str, "LESS_EQUAL_GREATER", 18) == 0) return YP_TOKEN_LESS_EQUAL_GREATER; + if (strncmp(str, "LESS_EQUAL", 10) == 0) return YP_TOKEN_LESS_EQUAL; + if (strncmp(str, "LESS_LESS_EQUAL", 15) == 0) return YP_TOKEN_LESS_LESS_EQUAL; + if (strncmp(str, "LESS_LESS", 9) == 0) return YP_TOKEN_LESS_LESS; + if (strncmp(str, "LESS", 4) == 0) return YP_TOKEN_LESS; + if (strncmp(str, "MINUS_AT", 8) == 0) return YP_TOKEN_MINUS_AT; + if (strncmp(str, "MINUS_EQUAL", 11) == 0) return YP_TOKEN_MINUS_EQUAL; + if (strncmp(str, "MINUS_GREATER", 13) == 0) return YP_TOKEN_MINUS_GREATER; + if (strncmp(str, "MINUS", 5) == 0) return YP_TOKEN_MINUS; + if (strncmp(str, "NEWLINE", 7) == 0) return YP_TOKEN_NEWLINE; + if (strncmp(str, "NTH_REFERENCE", 13) == 0) return YP_TOKEN_NTH_REFERENCE; + if (strncmp(str, "PARENTHESIS_LEFT", 16) == 0) return YP_TOKEN_PARENTHESIS_LEFT; + if (strncmp(str, "PARENTHESIS_RIGHT", 17) == 0) return YP_TOKEN_PARENTHESIS_RIGHT; + if (strncmp(str, "PERCENT_EQUAL", 13) == 0) return YP_TOKEN_PERCENT_EQUAL; + if (strncmp(str, "PERCENT_LOWER_I", 15) == 0) return YP_TOKEN_PERCENT_LOWER_I; + if (strncmp(str, "PERCENT_LOWER_W", 15) == 0) return YP_TOKEN_PERCENT_LOWER_W; + if (strncmp(str, "PERCENT_LOWER_X", 15) == 0) return YP_TOKEN_PERCENT_LOWER_X; + if (strncmp(str, "PERCENT_UPPER_I", 15) == 0) return YP_TOKEN_PERCENT_UPPER_I; + if (strncmp(str, "PERCENT_UPPER_W", 15) == 0) return YP_TOKEN_PERCENT_UPPER_W; + if (strncmp(str, "PERCENT", 7) == 0) return YP_TOKEN_PERCENT; + if (strncmp(str, "PIPE_EQUAL", 10) == 0) return YP_TOKEN_PIPE_EQUAL; + if (strncmp(str, "PIPE_PIPE_EQUAL", 15) == 0) return YP_TOKEN_PIPE_PIPE_EQUAL; + if (strncmp(str, "PIPE_PIPE", 9) == 0) return YP_TOKEN_PIPE_PIPE; + if (strncmp(str, "PIPE", 4) == 0) return YP_TOKEN_PIPE; + if (strncmp(str, "PLUS_AT", 7) == 0) return YP_TOKEN_PLUS_AT; + if (strncmp(str, "PLUS_EQUAL", 10) == 0) return YP_TOKEN_PLUS_EQUAL; + if (strncmp(str, "PLUS", 4) == 0) return YP_TOKEN_PLUS; + if (strncmp(str, "QUESTION_MARK", 13) == 0) return YP_TOKEN_QUESTION_MARK; + if (strncmp(str, "RATIONAL_NUMBER", 15) == 0) return YP_TOKEN_RATIONAL_NUMBER; + if (strncmp(str, "REGEXP_BEGIN", 12) == 0) return YP_TOKEN_REGEXP_BEGIN; + if (strncmp(str, "REGEXP_END", 10) == 0) return YP_TOKEN_REGEXP_END; + if (strncmp(str, "SEMICOLON", 9) == 0) return YP_TOKEN_SEMICOLON; + if (strncmp(str, "SLASH_EQUAL", 11) == 0) return YP_TOKEN_SLASH_EQUAL; + if (strncmp(str, "SLASH", 5) == 0) return YP_TOKEN_SLASH; + if (strncmp(str, "STAR_EQUAL", 10) == 0) return YP_TOKEN_STAR_EQUAL; + if (strncmp(str, "STAR_STAR_EQUAL", 15) == 0) return YP_TOKEN_STAR_STAR_EQUAL; + if (strncmp(str, "STAR_STAR", 9) == 0) return YP_TOKEN_STAR_STAR; + if (strncmp(str, "STAR", 4) == 0) return YP_TOKEN_STAR; + if (strncmp(str, "STRING_BEGIN", 12) == 0) return YP_TOKEN_STRING_BEGIN; + if (strncmp(str, "STRING_CONTENT", 14) == 0) return YP_TOKEN_STRING_CONTENT; + if (strncmp(str, "STRING_END", 10) == 0) return YP_TOKEN_STRING_END; + if (strncmp(str, "SYMBOL_BEGIN", 12) == 0) return YP_TOKEN_SYMBOL_BEGIN; + if (strncmp(str, "TILDE_AT", 8) == 0) return YP_TOKEN_TILDE_AT; + if (strncmp(str, "TILDE", 5) == 0) return YP_TOKEN_TILDE; + if (strncmp(str, "WORDS_SEP", 9) == 0) return YP_TOKEN_WORDS_SEP; + // Fallback + return YP_TOKEN_INVALID; +} diff --git a/ext/yarp/token_type.h b/ext/yarp/gen_token_type.h similarity index 95% rename from ext/yarp/token_type.h rename to ext/yarp/gen_token_type.h index 75e15fe54c..c6e477fd92 100644 --- a/ext/yarp/token_type.h +++ b/ext/yarp/gen_token_type.h @@ -1,3 +1,8 @@ +/******************************************************************************/ +/* This file is generated by the bin/template script and should not be */ +/* modified manually. */ +/******************************************************************************/ + #ifndef YARP_TOKEN_TYPE_H #define YARP_TOKEN_TYPE_H @@ -145,6 +150,6 @@ typedef enum yp_token_type { const char * token_type_to_str(yp_token_type_t token_type); yp_token_type_t -token_type_from_str(const char *s); +token_type_from_str(const char *str); #endif // YARP_TOKEN_TYPE_H diff --git a/ext/yarp/token.h b/ext/yarp/token.h index 644cd43f35..edc8cc4aa9 100644 --- a/ext/yarp/token.h +++ b/ext/yarp/token.h @@ -1,7 +1,7 @@ #ifndef YARP_TOKEN_H #define YARP_TOKEN_H -#include "token_type.h" +#include "gen_token_type.h" // This struct represents a token in the Ruby source. We use it to track both // type and location information. diff --git a/ext/yarp/token_type.c b/ext/yarp/token_type.c deleted file mode 100644 index 1717150de4..0000000000 --- a/ext/yarp/token_type.c +++ /dev/null @@ -1,705 +0,0 @@ -#include "token_type.h" -#include - -const char * -token_type_to_str(yp_token_type_t token_type) { - switch (token_type) { - case YP_TOKEN_EOF: - return "EOF"; - case YP_TOKEN_INVALID: - return "INVALID"; - case YP_TOKEN_AMPERSAND: - return "AMPERSAND"; - case YP_TOKEN_AMPERSAND_AMPERSAND: - return "AMPERSAND_AMPERSAND"; - case YP_TOKEN_AMPERSAND_AMPERSAND_EQUAL: - return "AMPERSAND_AMPERSAND_EQUAL"; - case YP_TOKEN_AMPERSAND_EQUAL: - return "AMPERSAND_EQUAL"; - case YP_TOKEN_BACK_REFERENCE: - return "BACK_REFERENCE"; - case YP_TOKEN_BACKTICK: - return "BACKTICK"; - case YP_TOKEN_BANG: - return "BANG"; - case YP_TOKEN_BANG_AT: - return "BANG_AT"; - case YP_TOKEN_BANG_EQUAL: - return "BANG_EQUAL"; - case YP_TOKEN_BANG_TILDE: - return "BANG_TILDE"; - case YP_TOKEN_BRACE_LEFT: - return "BRACE_LEFT"; - case YP_TOKEN_BRACE_RIGHT: - return "BRACE_RIGHT"; - case YP_TOKEN_BRACKET_LEFT: - return "BRACKET_LEFT"; - case YP_TOKEN_BRACKET_LEFT_RIGHT: - return "BRACKET_LEFT_RIGHT"; - case YP_TOKEN_BRACKET_RIGHT: - return "BRACKET_RIGHT"; - case YP_TOKEN_CARET: - return "CARET"; - case YP_TOKEN_CARET_EQUAL: - return "CARET_EQUAL"; - case YP_TOKEN_CHARACTER_LITERAL: - return "CHARACTER_LITERAL"; - case YP_TOKEN_CLASS_VARIABLE: - return "CLASS_VARIABLE"; - case YP_TOKEN_COLON: - return "COLON"; - case YP_TOKEN_COLON_COLON: - return "COLON_COLON"; - case YP_TOKEN_COMMA: - return "COMMA"; - case YP_TOKEN_COMMENT: - return "COMMENT"; - case YP_TOKEN_CONSTANT: - return "CONSTANT"; - case YP_TOKEN_DOT: - return "DOT"; - case YP_TOKEN_DOT_DOT: - return "DOT_DOT"; - case YP_TOKEN_DOT_DOT_DOT: - return "DOT_DOT_DOT"; - case YP_TOKEN_EMBDOC_BEGIN: - return "EMBDOC_BEGIN"; - case YP_TOKEN_EMBDOC_END: - return "EMBDOC_END"; - case YP_TOKEN_EMBDOC_LINE: - return "EMBDOC_LINE"; - case YP_TOKEN_EMBEXPR_BEGIN: - return "EMBEXPR_BEGIN"; - case YP_TOKEN_EMBEXPR_END: - return "EMBEXPR_END"; - case YP_TOKEN_EQUAL: - return "EQUAL"; - case YP_TOKEN_EQUAL_EQUAL: - return "EQUAL_EQUAL"; - case YP_TOKEN_EQUAL_EQUAL_EQUAL: - return "EQUAL_EQUAL_EQUAL"; - case YP_TOKEN_EQUAL_GREATER: - return "EQUAL_GREATER"; - case YP_TOKEN_EQUAL_TILDE: - return "EQUAL_TILDE"; - case YP_TOKEN_FLOAT: - return "FLOAT"; - case YP_TOKEN_GREATER: - return "GREATER"; - case YP_TOKEN_GREATER_EQUAL: - return "GREATER_EQUAL"; - case YP_TOKEN_GREATER_GREATER: - return "GREATER_GREATER"; - case YP_TOKEN_GREATER_GREATER_EQUAL: - return "GREATER_GREATER_EQUAL"; - case YP_TOKEN_GLOBAL_VARIABLE: - return "GLOBAL_VARIABLE"; - case YP_TOKEN_IDENTIFIER: - return "IDENTIFIER"; - case YP_TOKEN_IMAGINARY_NUMBER: - return "IMAGINARY_NUMBER"; - case YP_TOKEN_INSTANCE_VARIABLE: - return "INSTANCE_VARIABLE"; - case YP_TOKEN_INTEGER: - return "INTEGER"; - case YP_TOKEN_KEYWORD___ENCODING__: - return "KEYWORD___ENCODING__"; - case YP_TOKEN_KEYWORD___LINE__: - return "KEYWORD___LINE__"; - case YP_TOKEN_KEYWORD___FILE__: - return "KEYWORD___FILE__"; - case YP_TOKEN_KEYWORD_ALIAS: - return "KEYWORD_ALIAS"; - case YP_TOKEN_KEYWORD_AND: - return "KEYWORD_AND"; - case YP_TOKEN_KEYWORD_BEGIN: - return "KEYWORD_BEGIN"; - case YP_TOKEN_KEYWORD_BEGIN_UPCASE: - return "KEYWORD_BEGIN_UPCASE"; - case YP_TOKEN_KEYWORD_BREAK: - return "KEYWORD_BREAK"; - case YP_TOKEN_KEYWORD_CASE: - return "KEYWORD_CASE"; - case YP_TOKEN_KEYWORD_CLASS: - return "KEYWORD_CLASS"; - case YP_TOKEN_KEYWORD_DEF: - return "KEYWORD_DEF"; - case YP_TOKEN_KEYWORD_DEFINED: - return "KEYWORD_DEFINED"; - case YP_TOKEN_KEYWORD_DO: - return "KEYWORD_DO"; - case YP_TOKEN_KEYWORD_ELSE: - return "KEYWORD_ELSE"; - case YP_TOKEN_KEYWORD_ELSIF: - return "KEYWORD_ELSIF"; - case YP_TOKEN_KEYWORD_END: - return "KEYWORD_END"; - case YP_TOKEN_KEYWORD_END_UPCASE: - return "KEYWORD_END_UPCASE"; - case YP_TOKEN_KEYWORD_ENSURE: - return "KEYWORD_ENSURE"; - case YP_TOKEN_KEYWORD_FALSE: - return "KEYWORD_FALSE"; - case YP_TOKEN_KEYWORD_FOR: - return "KEYWORD_FOR"; - case YP_TOKEN_KEYWORD_IF: - return "KEYWORD_IF"; - case YP_TOKEN_KEYWORD_IN: - return "KEYWORD_IN"; - case YP_TOKEN_KEYWORD_MODULE: - return "KEYWORD_MODULE"; - case YP_TOKEN_KEYWORD_NEXT: - return "KEYWORD_NEXT"; - case YP_TOKEN_KEYWORD_NIL: - return "KEYWORD_NIL"; - case YP_TOKEN_KEYWORD_NOT: - return "KEYWORD_NOT"; - case YP_TOKEN_KEYWORD_OR: - return "KEYWORD_OR"; - case YP_TOKEN_KEYWORD_REDO: - return "KEYWORD_REDO"; - case YP_TOKEN_KEYWORD_RESCUE: - return "KEYWORD_RESCUE"; - case YP_TOKEN_KEYWORD_RETRY: - return "KEYWORD_RETRY"; - case YP_TOKEN_KEYWORD_RETURN: - return "KEYWORD_RETURN"; - case YP_TOKEN_KEYWORD_SELF: - return "KEYWORD_SELF"; - case YP_TOKEN_KEYWORD_SUPER: - return "KEYWORD_SUPER"; - case YP_TOKEN_KEYWORD_THEN: - return "KEYWORD_THEN"; - case YP_TOKEN_KEYWORD_TRUE: - return "KEYWORD_TRUE"; - case YP_TOKEN_KEYWORD_UNDEF: - return "KEYWORD_UNDEF"; - case YP_TOKEN_KEYWORD_UNLESS: - return "KEYWORD_UNLESS"; - case YP_TOKEN_KEYWORD_UNTIL: - return "KEYWORD_UNTIL"; - case YP_TOKEN_KEYWORD_WHEN: - return "KEYWORD_WHEN"; - case YP_TOKEN_KEYWORD_WHILE: - return "KEYWORD_WHILE"; - case YP_TOKEN_KEYWORD_YIELD: - return "KEYWORD_YIELD"; - case YP_TOKEN_LABEL: - return "LABEL"; - case YP_TOKEN_LAMBDA_BEGIN: - return "LAMBDA_BEGIN"; - case YP_TOKEN_LESS: - return "LESS"; - case YP_TOKEN_LESS_EQUAL: - return "LESS_EQUAL"; - case YP_TOKEN_LESS_EQUAL_GREATER: - return "LESS_EQUAL_GREATER"; - case YP_TOKEN_LESS_LESS: - return "LESS_LESS"; - case YP_TOKEN_LESS_LESS_EQUAL: - return "LESS_LESS_EQUAL"; - case YP_TOKEN_MINUS: - return "MINUS"; - case YP_TOKEN_MINUS_AT: - return "MINUS_AT"; - case YP_TOKEN_MINUS_EQUAL: - return "MINUS_EQUAL"; - case YP_TOKEN_MINUS_GREATER: - return "MINUS_GREATER"; - case YP_TOKEN_NEWLINE: - return "NEWLINE"; - case YP_TOKEN_NTH_REFERENCE: - return "NTH_REFERENCE"; - case YP_TOKEN_PARENTHESIS_LEFT: - return "PARENTHESIS_LEFT"; - case YP_TOKEN_PARENTHESIS_RIGHT: - return "PARENTHESIS_RIGHT"; - case YP_TOKEN_PERCENT: - return "PERCENT"; - case YP_TOKEN_PERCENT_EQUAL: - return "PERCENT_EQUAL"; - case YP_TOKEN_PERCENT_LOWER_I: - return "PERCENT_LOWER_I"; - case YP_TOKEN_PERCENT_LOWER_W: - return "PERCENT_LOWER_W"; - case YP_TOKEN_PERCENT_LOWER_X: - return "PERCENT_LOWER_X"; - case YP_TOKEN_PERCENT_UPPER_I: - return "PERCENT_UPPER_I"; - case YP_TOKEN_PERCENT_UPPER_W: - return "PERCENT_UPPER_W"; - case YP_TOKEN_PIPE: - return "PIPE"; - case YP_TOKEN_PIPE_EQUAL: - return "PIPE_EQUAL"; - case YP_TOKEN_PIPE_PIPE: - return "PIPE_PIPE"; - case YP_TOKEN_PIPE_PIPE_EQUAL: - return "PIPE_PIPE_EQUAL"; - case YP_TOKEN_PLUS: - return "PLUS"; - case YP_TOKEN_PLUS_AT: - return "PLUS_AT"; - case YP_TOKEN_PLUS_EQUAL: - return "PLUS_EQUAL"; - case YP_TOKEN_QUESTION_MARK: - return "QUESTION_MARK"; - case YP_TOKEN_RATIONAL_NUMBER: - return "RATIONAL_NUMBER"; - case YP_TOKEN_REGEXP_BEGIN: - return "REGEXP_BEGIN"; - case YP_TOKEN_REGEXP_END: - return "REGEXP_END"; - case YP_TOKEN_SEMICOLON: - return "SEMICOLON"; - case YP_TOKEN_SLASH: - return "SLASH"; - case YP_TOKEN_SLASH_EQUAL: - return "SLASH_EQUAL"; - case YP_TOKEN_STAR: - return "STAR"; - case YP_TOKEN_STAR_EQUAL: - return "STAR_EQUAL"; - case YP_TOKEN_STAR_STAR: - return "STAR_STAR"; - case YP_TOKEN_STAR_STAR_EQUAL: - return "STAR_STAR_EQUAL"; - case YP_TOKEN_STRING_BEGIN: - return "STRING_BEGIN"; - case YP_TOKEN_STRING_CONTENT: - return "STRING_CONTENT"; - case YP_TOKEN_STRING_END: - return "STRING_END"; - case YP_TOKEN_SYMBOL_BEGIN: - return "SYMBOL_BEGIN"; - case YP_TOKEN_TILDE: - return "TILDE"; - case YP_TOKEN_TILDE_AT: - return "TILDE_AT"; - case YP_TOKEN_WORDS_SEP: - return "WORDS_SEP"; - case YP_TOKEN_MAXIMUM: - return "MAXIMUM"; - } -} - -yp_token_type_t -token_type_from_str(const char *s) { - if (strcmp(s, "EOF") == 0) { - return YP_TOKEN_EOF; - } - if (strcmp(s, "INVALID") == 0) { - return YP_TOKEN_INVALID; - } - if (strcmp(s, "AMPERSAND") == 0) { - return YP_TOKEN_AMPERSAND; - } - if (strcmp(s, "AMPERSAND_AMPERSAND") == 0) { - return YP_TOKEN_AMPERSAND_AMPERSAND; - } - if (strcmp(s, "AMPERSAND_AMPERSAND_EQUAL") == 0) { - return YP_TOKEN_AMPERSAND_AMPERSAND_EQUAL; - } - if (strcmp(s, "AMPERSAND_EQUAL") == 0) { - return YP_TOKEN_AMPERSAND_EQUAL; - } - if (strcmp(s, "BACK_REFERENCE") == 0) { - return YP_TOKEN_BACK_REFERENCE; - } - if (strcmp(s, "BACKTICK") == 0) { - return YP_TOKEN_BACKTICK; - } - if (strcmp(s, "BANG") == 0) { - return YP_TOKEN_BANG; - } - if (strcmp(s, "BANG_AT") == 0) { - return YP_TOKEN_BANG_AT; - } - if (strcmp(s, "BANG_EQUAL") == 0) { - return YP_TOKEN_BANG_EQUAL; - } - if (strcmp(s, "BANG_TILDE") == 0) { - return YP_TOKEN_BANG_TILDE; - } - if (strcmp(s, "BRACE_LEFT") == 0) { - return YP_TOKEN_BRACE_LEFT; - } - if (strcmp(s, "BRACE_RIGHT") == 0) { - return YP_TOKEN_BRACE_RIGHT; - } - if (strcmp(s, "BRACKET_LEFT") == 0) { - return YP_TOKEN_BRACKET_LEFT; - } - if (strcmp(s, "BRACKET_LEFT_RIGHT") == 0) { - return YP_TOKEN_BRACKET_LEFT_RIGHT; - } - if (strcmp(s, "BRACKET_RIGHT") == 0) { - return YP_TOKEN_BRACKET_RIGHT; - } - if (strcmp(s, "CARET") == 0) { - return YP_TOKEN_CARET; - } - if (strcmp(s, "CARET_EQUAL") == 0) { - return YP_TOKEN_CARET_EQUAL; - } - if (strcmp(s, "CHARACTER_LITERAL") == 0) { - return YP_TOKEN_CHARACTER_LITERAL; - } - if (strcmp(s, "CLASS_VARIABLE") == 0) { - return YP_TOKEN_CLASS_VARIABLE; - } - if (strcmp(s, "COLON") == 0) { - return YP_TOKEN_COLON; - } - if (strcmp(s, "COLON_COLON") == 0) { - return YP_TOKEN_COLON_COLON; - } - if (strcmp(s, "COMMA") == 0) { - return YP_TOKEN_COMMA; - } - if (strcmp(s, "COMMENT") == 0) { - return YP_TOKEN_COMMENT; - } - if (strcmp(s, "CONSTANT") == 0) { - return YP_TOKEN_CONSTANT; - } - if (strcmp(s, "DOT") == 0) { - return YP_TOKEN_DOT; - } - if (strcmp(s, "DOT_DOT") == 0) { - return YP_TOKEN_DOT_DOT; - } - if (strcmp(s, "DOT_DOT_DOT") == 0) { - return YP_TOKEN_DOT_DOT_DOT; - } - if (strcmp(s, "EMBDOC_BEGIN") == 0) { - return YP_TOKEN_EMBDOC_BEGIN; - } - if (strcmp(s, "EMBDOC_END") == 0) { - return YP_TOKEN_EMBDOC_END; - } - if (strcmp(s, "EMBDOC_LINE") == 0) { - return YP_TOKEN_EMBDOC_LINE; - } - if (strcmp(s, "EMBEXPR_BEGIN") == 0) { - return YP_TOKEN_EMBEXPR_BEGIN; - } - if (strcmp(s, "EMBEXPR_END") == 0) { - return YP_TOKEN_EMBEXPR_END; - } - if (strcmp(s, "EQUAL") == 0) { - return YP_TOKEN_EQUAL; - } - if (strcmp(s, "EQUAL_EQUAL") == 0) { - return YP_TOKEN_EQUAL_EQUAL; - } - if (strcmp(s, "EQUAL_EQUAL_EQUAL") == 0) { - return YP_TOKEN_EQUAL_EQUAL_EQUAL; - } - if (strcmp(s, "EQUAL_GREATER") == 0) { - return YP_TOKEN_EQUAL_GREATER; - } - if (strcmp(s, "EQUAL_TILDE") == 0) { - return YP_TOKEN_EQUAL_TILDE; - } - if (strcmp(s, "FLOAT") == 0) { - return YP_TOKEN_FLOAT; - } - if (strcmp(s, "GREATER") == 0) { - return YP_TOKEN_GREATER; - } - if (strcmp(s, "GREATER_EQUAL") == 0) { - return YP_TOKEN_GREATER_EQUAL; - } - if (strcmp(s, "GREATER_GREATER") == 0) { - return YP_TOKEN_GREATER_GREATER; - } - if (strcmp(s, "GREATER_GREATER_EQUAL") == 0) { - return YP_TOKEN_GREATER_GREATER_EQUAL; - } - if (strcmp(s, "GLOBAL_VARIABLE") == 0) { - return YP_TOKEN_GLOBAL_VARIABLE; - } - if (strcmp(s, "IDENTIFIER") == 0) { - return YP_TOKEN_IDENTIFIER; - } - if (strcmp(s, "IMAGINARY_NUMBER") == 0) { - return YP_TOKEN_IMAGINARY_NUMBER; - } - if (strcmp(s, "INSTANCE_VARIABLE") == 0) { - return YP_TOKEN_INSTANCE_VARIABLE; - } - if (strcmp(s, "INTEGER") == 0) { - return YP_TOKEN_INTEGER; - } - if (strcmp(s, "KEYWORD___ENCODING__") == 0) { - return YP_TOKEN_KEYWORD___ENCODING__; - } - if (strcmp(s, "KEYWORD___LINE__") == 0) { - return YP_TOKEN_KEYWORD___LINE__; - } - if (strcmp(s, "KEYWORD___FILE__") == 0) { - return YP_TOKEN_KEYWORD___FILE__; - } - if (strcmp(s, "KEYWORD_ALIAS") == 0) { - return YP_TOKEN_KEYWORD_ALIAS; - } - if (strcmp(s, "KEYWORD_AND") == 0) { - return YP_TOKEN_KEYWORD_AND; - } - if (strcmp(s, "KEYWORD_BEGIN") == 0) { - return YP_TOKEN_KEYWORD_BEGIN; - } - if (strcmp(s, "KEYWORD_BEGIN_UPCASE") == 0) { - return YP_TOKEN_KEYWORD_BEGIN_UPCASE; - } - if (strcmp(s, "KEYWORD_BREAK") == 0) { - return YP_TOKEN_KEYWORD_BREAK; - } - if (strcmp(s, "KEYWORD_CASE") == 0) { - return YP_TOKEN_KEYWORD_CASE; - } - if (strcmp(s, "KEYWORD_CLASS") == 0) { - return YP_TOKEN_KEYWORD_CLASS; - } - if (strcmp(s, "KEYWORD_DEF") == 0) { - return YP_TOKEN_KEYWORD_DEF; - } - if (strcmp(s, "KEYWORD_DEFINED") == 0) { - return YP_TOKEN_KEYWORD_DEFINED; - } - if (strcmp(s, "KEYWORD_DO") == 0) { - return YP_TOKEN_KEYWORD_DO; - } - if (strcmp(s, "KEYWORD_ELSE") == 0) { - return YP_TOKEN_KEYWORD_ELSE; - } - if (strcmp(s, "KEYWORD_ELSIF") == 0) { - return YP_TOKEN_KEYWORD_ELSIF; - } - if (strcmp(s, "KEYWORD_END") == 0) { - return YP_TOKEN_KEYWORD_END; - } - if (strcmp(s, "KEYWORD_END_UPCASE") == 0) { - return YP_TOKEN_KEYWORD_END_UPCASE; - } - if (strcmp(s, "KEYWORD_ENSURE") == 0) { - return YP_TOKEN_KEYWORD_ENSURE; - } - if (strcmp(s, "KEYWORD_FALSE") == 0) { - return YP_TOKEN_KEYWORD_FALSE; - } - if (strcmp(s, "KEYWORD_FOR") == 0) { - return YP_TOKEN_KEYWORD_FOR; - } - if (strcmp(s, "KEYWORD_IF") == 0) { - return YP_TOKEN_KEYWORD_IF; - } - if (strcmp(s, "KEYWORD_IN") == 0) { - return YP_TOKEN_KEYWORD_IN; - } - if (strcmp(s, "KEYWORD_MODULE") == 0) { - return YP_TOKEN_KEYWORD_MODULE; - } - if (strcmp(s, "KEYWORD_NEXT") == 0) { - return YP_TOKEN_KEYWORD_NEXT; - } - if (strcmp(s, "KEYWORD_NIL") == 0) { - return YP_TOKEN_KEYWORD_NIL; - } - if (strcmp(s, "KEYWORD_NOT") == 0) { - return YP_TOKEN_KEYWORD_NOT; - } - if (strcmp(s, "KEYWORD_OR") == 0) { - return YP_TOKEN_KEYWORD_OR; - } - if (strcmp(s, "KEYWORD_REDO") == 0) { - return YP_TOKEN_KEYWORD_REDO; - } - if (strcmp(s, "KEYWORD_RESCUE") == 0) { - return YP_TOKEN_KEYWORD_RESCUE; - } - if (strcmp(s, "KEYWORD_RETRY") == 0) { - return YP_TOKEN_KEYWORD_RETRY; - } - if (strcmp(s, "KEYWORD_RETURN") == 0) { - return YP_TOKEN_KEYWORD_RETURN; - } - if (strcmp(s, "KEYWORD_SELF") == 0) { - return YP_TOKEN_KEYWORD_SELF; - } - if (strcmp(s, "KEYWORD_SUPER") == 0) { - return YP_TOKEN_KEYWORD_SUPER; - } - if (strcmp(s, "KEYWORD_THEN") == 0) { - return YP_TOKEN_KEYWORD_THEN; - } - if (strcmp(s, "KEYWORD_TRUE") == 0) { - return YP_TOKEN_KEYWORD_TRUE; - } - if (strcmp(s, "KEYWORD_UNDEF") == 0) { - return YP_TOKEN_KEYWORD_UNDEF; - } - if (strcmp(s, "KEYWORD_UNLESS") == 0) { - return YP_TOKEN_KEYWORD_UNLESS; - } - if (strcmp(s, "KEYWORD_UNTIL") == 0) { - return YP_TOKEN_KEYWORD_UNTIL; - } - if (strcmp(s, "KEYWORD_WHEN") == 0) { - return YP_TOKEN_KEYWORD_WHEN; - } - if (strcmp(s, "KEYWORD_WHILE") == 0) { - return YP_TOKEN_KEYWORD_WHILE; - } - if (strcmp(s, "KEYWORD_YIELD") == 0) { - return YP_TOKEN_KEYWORD_YIELD; - } - if (strcmp(s, "LABEL") == 0) { - return YP_TOKEN_LABEL; - } - if (strcmp(s, "LAMBDA_BEGIN") == 0) { - return YP_TOKEN_LAMBDA_BEGIN; - } - if (strcmp(s, "LESS") == 0) { - return YP_TOKEN_LESS; - } - if (strcmp(s, "LESS_EQUAL") == 0) { - return YP_TOKEN_LESS_EQUAL; - } - if (strcmp(s, "LESS_EQUAL_GREATER") == 0) { - return YP_TOKEN_LESS_EQUAL_GREATER; - } - if (strcmp(s, "LESS_LESS") == 0) { - return YP_TOKEN_LESS_LESS; - } - if (strcmp(s, "LESS_LESS_EQUAL") == 0) { - return YP_TOKEN_LESS_LESS_EQUAL; - } - if (strcmp(s, "MINUS") == 0) { - return YP_TOKEN_MINUS; - } - if (strcmp(s, "MINUS_AT") == 0) { - return YP_TOKEN_MINUS_AT; - } - if (strcmp(s, "MINUS_EQUAL") == 0) { - return YP_TOKEN_MINUS_EQUAL; - } - if (strcmp(s, "MINUS_GREATER") == 0) { - return YP_TOKEN_MINUS_GREATER; - } - if (strcmp(s, "NEWLINE") == 0) { - return YP_TOKEN_NEWLINE; - } - if (strcmp(s, "NTH_REFERENCE") == 0) { - return YP_TOKEN_NTH_REFERENCE; - } - if (strcmp(s, "PARENTHESIS_LEFT") == 0) { - return YP_TOKEN_PARENTHESIS_LEFT; - } - if (strcmp(s, "PARENTHESIS_RIGHT") == 0) { - return YP_TOKEN_PARENTHESIS_RIGHT; - } - if (strcmp(s, "PERCENT") == 0) { - return YP_TOKEN_PERCENT; - } - if (strcmp(s, "PERCENT_EQUAL") == 0) { - return YP_TOKEN_PERCENT_EQUAL; - } - if (strcmp(s, "PERCENT_LOWER_I") == 0) { - return YP_TOKEN_PERCENT_LOWER_I; - } - if (strcmp(s, "PERCENT_LOWER_W") == 0) { - return YP_TOKEN_PERCENT_LOWER_W; - } - if (strcmp(s, "PERCENT_LOWER_X") == 0) { - return YP_TOKEN_PERCENT_LOWER_X; - } - if (strcmp(s, "PERCENT_UPPER_I") == 0) { - return YP_TOKEN_PERCENT_UPPER_I; - } - if (strcmp(s, "PERCENT_UPPER_W") == 0) { - return YP_TOKEN_PERCENT_UPPER_W; - } - if (strcmp(s, "PIPE") == 0) { - return YP_TOKEN_PIPE; - } - if (strcmp(s, "PIPE_EQUAL") == 0) { - return YP_TOKEN_PIPE_EQUAL; - } - if (strcmp(s, "PIPE_PIPE") == 0) { - return YP_TOKEN_PIPE_PIPE; - } - if (strcmp(s, "PIPE_PIPE_EQUAL") == 0) { - return YP_TOKEN_PIPE_PIPE_EQUAL; - } - if (strcmp(s, "PLUS") == 0) { - return YP_TOKEN_PLUS; - } - if (strcmp(s, "PLUS_AT") == 0) { - return YP_TOKEN_PLUS_AT; - } - if (strcmp(s, "PLUS_EQUAL") == 0) { - return YP_TOKEN_PLUS_EQUAL; - } - if (strcmp(s, "QUESTION_MARK") == 0) { - return YP_TOKEN_QUESTION_MARK; - } - if (strcmp(s, "RATIONAL_NUMBER") == 0) { - return YP_TOKEN_RATIONAL_NUMBER; - } - if (strcmp(s, "REGEXP_BEGIN") == 0) { - return YP_TOKEN_REGEXP_BEGIN; - } - if (strcmp(s, "REGEXP_END") == 0) { - return YP_TOKEN_REGEXP_END; - } - if (strcmp(s, "SEMICOLON") == 0) { - return YP_TOKEN_SEMICOLON; - } - if (strcmp(s, "SLASH") == 0) { - return YP_TOKEN_SLASH; - } - if (strcmp(s, "SLASH_EQUAL") == 0) { - return YP_TOKEN_SLASH_EQUAL; - } - if (strcmp(s, "STAR") == 0) { - return YP_TOKEN_STAR; - } - if (strcmp(s, "STAR_EQUAL") == 0) { - return YP_TOKEN_STAR_EQUAL; - } - if (strcmp(s, "STAR_STAR") == 0) { - return YP_TOKEN_STAR_STAR; - } - if (strcmp(s, "STAR_STAR_EQUAL") == 0) { - return YP_TOKEN_STAR_STAR_EQUAL; - } - if (strcmp(s, "STRING_BEGIN") == 0) { - return YP_TOKEN_STRING_BEGIN; - } - if (strcmp(s, "STRING_CONTENT") == 0) { - return YP_TOKEN_STRING_CONTENT; - } - if (strcmp(s, "STRING_END") == 0) { - return YP_TOKEN_STRING_END; - } - if (strcmp(s, "SYMBOL_BEGIN") == 0) { - return YP_TOKEN_SYMBOL_BEGIN; - } - if (strcmp(s, "TILDE") == 0) { - return YP_TOKEN_TILDE; - } - if (strcmp(s, "TILDE_AT") == 0) { - return YP_TOKEN_TILDE_AT; - } - if (strcmp(s, "WORDS_SEP") == 0) { - return YP_TOKEN_WORDS_SEP; - } - if (strcmp(s, "MAXIMUM") == 0) { - return YP_TOKEN_MAXIMUM; - } - - // Fallback - return YP_TOKEN_INVALID; -} diff --git a/ext/yarp/yarp.h b/ext/yarp/yarp.h index f8ff9233ee..3cb5080412 100644 --- a/ext/yarp/yarp.h +++ b/ext/yarp/yarp.h @@ -1,8 +1,8 @@ #ifndef YARP_H #define YARP_H +#include "gen_node.h" #include "location.h" -#include "node.h" #include "token.h" #include #include diff --git a/test-native/run-lexer.c b/test-native/run-lexer.c index 9f6dcd16da..73234eba65 100644 --- a/test-native/run-lexer.c +++ b/test-native/run-lexer.c @@ -1,4 +1,4 @@ -#include "../ext/yarp/token_type.h" +#include "../ext/yarp/gen_token_type.h" #include "../ext/yarp/yarp.h" #include "file.h" #include "formatter.h" diff --git a/test-native/run-one.c b/test-native/run-one.c index 0733c0b1fe..a60a88fe70 100644 --- a/test-native/run-one.c +++ b/test-native/run-one.c @@ -1,4 +1,4 @@ -#include "../ext/yarp/token_type.c" +#include "../ext/yarp/gen_token_type.c" #include "../ext/yarp/yarp.c" #include "file.h" #include "formatter.h" diff --git a/test-native/run-parser.c b/test-native/run-parser.c index 8c68d1a65d..2760e53049 100644 --- a/test-native/run-parser.c +++ b/test-native/run-parser.c @@ -1,4 +1,4 @@ -#include "../ext/yarp/token_type.h" +#include "../ext/yarp/gen_token_type.h" #include "../ext/yarp/yarp.h" int