Skip to content

Commit

Permalink
Removed some ANSI C things from the HLSL grammar that shaders don't do.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Feb 28, 2009
1 parent 3e6ee8d commit ecf67ce
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 31 deletions.
16 changes: 9 additions & 7 deletions mojoshader_compiler.c
@@ -1,14 +1,17 @@
typedef struct Context Context;
#include "mojoshader_parser_hlsl.h"
#include "mojoshader_parser_hlsl.c"
#define __MOJOSHADER_INTERNAL__ 1
#include "mojoshader_internal.h"

struct Context
typedef struct Context
{
Preprocessor *preprocessor;
const char *token; // assembler token!
unsigned int tokenlen; // assembler token!
Token tokenval; // assembler token!
};
} Context;

#define __MOJOSHADER_HLSL_COMPILER__ 1
#include "mojoshader_parser_hlsl.h"
#include "mojoshader_parser_hlsl.c"

static int ConvertToLemonToken(const Context *ctx)
{
Expand Down Expand Up @@ -87,15 +90,14 @@ static int ConvertToLemonToken(const Context *ctx)
if (tokencmp("void")) return TOKEN_HLSL_VOID;
if (tokencmp("struct")) return TOKEN_HLSL_STRUCT;
if (tokencmp("union")) return TOKEN_HLSL_UNION;
if (tokencmp("enum")) return TOKEN_HLSL_ENUM;
if (tokencmp("case")) return TOKEN_HLSL_CASE;
if (tokencmp("default")) return TOKEN_HLSL_DEFAULT;
if (tokencmp("discard")) return TOKEN_HLSL_DISCARD;
if (tokencmp("if")) return TOKEN_HLSL_IF;
if (tokencmp("switch")) return TOKEN_HLSL_SWITCH;
if (tokencmp("while")) return TOKEN_HLSL_WHILE;
if (tokencmp("do")) return TOKEN_HLSL_DO;
if (tokencmp("for")) return TOKEN_HLSL_FOR;
if (tokencmp("goto")) return TOKEN_HLSL_GOTO;
if (tokencmp("continue")) return TOKEN_HLSL_CONTINUE;
if (tokencmp("break")) return TOKEN_HLSL_BREAK;
if (tokencmp("return")) return TOKEN_HLSL_RETURN;
Expand Down
28 changes: 4 additions & 24 deletions mojoshader_parser_hlsl.lemon
Expand Up @@ -25,8 +25,9 @@
%extra_argument { Context *ctx }

%include {
#define __MOJOSHADER_INTERNAL__ 1
#include "mojoshader_internal.h"
#ifndef __MOJOSHADER_HLSL_COMPILER__
#error Do not compile this file directly.
#endif
}

%parse_failure {
Expand Down Expand Up @@ -192,7 +193,6 @@ type_specifier ::= CONST.
type_specifier ::= VOLATILE.
type_specifier ::= VOID.
type_specifier ::= struct_or_union_specifier.
type_specifier ::= enum_specifier.
type_specifier ::= TYPE_NAME.

struct_or_union_specifier ::= struct_or_union identifier LBRACE
Expand All @@ -216,18 +216,7 @@ struct_declarator ::= declarator.
struct_declarator ::= COLON constant_expr.
struct_declarator ::= declarator COLON constant_expr.

enum_specifier ::= ENUM LBRACE enumerator_list RBRACE.
enum_specifier ::= ENUM identifier LBRACE enumerator_list RBRACE.
enum_specifier ::= ENUM identifier.

enumerator_list ::= enumerator.
enumerator_list ::= enumerator_list COMMA enumerator.

enumerator ::= identifier.
enumerator ::= identifier ASSIGN constant_expr.

declarator ::= declarator2.
declarator ::= pointer declarator2.

declarator2 ::= identifier.
declarator2 ::= LPAREN declarator RPAREN.
Expand All @@ -237,22 +226,15 @@ declarator2 ::= declarator2 LPAREN RPAREN.
declarator2 ::= declarator2 LPAREN parameter_type_list RPAREN.
declarator2 ::= declarator2 LPAREN parameter_identifier_list RPAREN.

pointer ::= STAR.
pointer ::= STAR type_specifier_list.
pointer ::= STAR pointer.
pointer ::= STAR type_specifier_list pointer.

type_specifier_list ::= type_specifier.
type_specifier_list ::= type_specifier_list type_specifier.

parameter_identifier_list ::= identifier_list.
parameter_identifier_list ::= identifier_list COMMA ELIPSIS.

identifier_list ::= identifier.
identifier_list ::= identifier_list COMMA identifier.

parameter_type_list ::= parameter_list.
parameter_type_list ::= parameter_list COMMA ELIPSIS.

parameter_list ::= parameter_declaration.
parameter_list ::= parameter_list COMMA parameter_declaration.
Expand All @@ -263,9 +245,7 @@ parameter_declaration ::= type_name.
type_name ::= type_specifier_list.
type_name ::= type_specifier_list abstract_declarator.

abstract_declarator ::= pointer.
abstract_declarator ::= abstract_declarator2.
abstract_declarator ::= pointer abstract_declarator2.

abstract_declarator2 ::= LPAREN abstract_declarator RPAREN.
abstract_declarator2 ::= LBRACKET RBRACKET.
Expand Down Expand Up @@ -324,9 +304,9 @@ iteration_statement ::= FOR LPAREN expr SEMICOLON SEMICOLON expr RPAREN statemen
iteration_statement ::= FOR LPAREN expr SEMICOLON expr SEMICOLON RPAREN statement.
iteration_statement ::= FOR LPAREN expr SEMICOLON expr SEMICOLON expr RPAREN statement.

jump_statement ::= GOTO identifier SEMICOLON.
jump_statement ::= CONTINUE SEMICOLON.
jump_statement ::= BREAK SEMICOLON.
jump_statement ::= DISCARD SEMICOLON.
jump_statement ::= RETURN SEMICOLON.
jump_statement ::= RETURN expr SEMICOLON.

Expand Down

0 comments on commit ecf67ce

Please sign in to comment.