Skip to content

Commit

Permalink
pass rate 71%
Browse files Browse the repository at this point in the history
  • Loading branch information
dongjoon1251 committed Dec 15, 2014
1 parent a0db264 commit c12ab42
Show file tree
Hide file tree
Showing 4 changed files with 40,491 additions and 31,370 deletions.
131 changes: 83 additions & 48 deletions grammar/cpp.jison
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

%token IDENTIFIER

%token ABSTRACT AS BASE BOOL BREAK BYTE CASE CATCH CHAR CHECKED CLASS CONST CONTINUE DECIMAL DEFAULT DELEGATE DO DOUBLE ELSE ENUM EXPLICIT EXTERN FALSE FINALLY FIXED FLOAT FOR FOREACH GOTO IF IMPLICIT INT INTERFACE INTERNAL IS LOCK LONG NAMESPACE NEW NULL OBJECT OPERATOR OVERRIDE PARAMS PRIVATE PROTECTED PUBLIC READONLY RETURN SBYTE SEALED SHORT SIZEOF STACKALLOC STATIC STRING STRUCT SWITCH THIS THROW TRUE TRY TYPEOF UINT ULONG UNCHECKED UNSAFE USHORT USING VIRTUAL VOID VOLATILE WHILE
%token ABSTRACT AS BASE BOOL BREAK BYTE CASE CATCH CHAR CHECKED CLASS CONST CONTINUE DECIMAL DEFAULT DELEGATE DO DOUBLE ELSE ENUM EXPLICIT EXTERN FALSE FINALLY FIXED FLOAT FOR FOREACH GOTO IF IMPLICIT INTERFACE INTERNAL IS LOCK LONG NAMESPACE NEW NULL OPERATOR OVERRIDE PARAMS PRIVATE PROTECTED PUBLIC READONLY RETURN SBYTE SEALED SHORT SIZEOF STACKALLOC STATIC STRUCT SWITCH THIS THROW TRUE TRY TYPEOF UINT ULONG UNCHECKED UNSAFE USHORT USING VIRTUAL VOID VOLATILE WHILE

%token ASSEMBLY MODULE FIELD METHOD PARAM PROPERTY TYPE

Expand Down Expand Up @@ -192,7 +192,7 @@ type
{
$$ = $1;
}
| TYPEDEF
| TYPEDEF
| UNSIGNED type
| UNSIGNED
| INLINE
Expand All @@ -201,6 +201,9 @@ type
| CONST type
| STATIC type
| type CARET
| VOLATILE type
| VIRTUAL type
| type DOUBLE_COLON type
;

type-with-interr
Expand All @@ -212,20 +215,34 @@ non-array-type
| SBYTE
| BYTE
| SHORT
| USHORT
| INT
| USHORT
| UINT
| LONG
| ULONG
| CHAR
| FLOAT
| DOUBLE
| DECIMAL
| BOOL
| OBJECT
| STRING
| BOOL
| VOID
| AUTO
| SHORT INT
| LONG INT
| LONG LONG
| SIGNED INT
| SIGNED CHAR
| SIGNED LONG
| SIGNED SHORT
| SIGNED SHORT INT
| SIGNED LONG INT
| SIGNED LONG LONG
| UNSIGNED INT
| UNSIGNED CHAR
| UNSIGNED LONG
| UNSIGNED SHORT
| UNSIGNED SHORT INT
| UNSIGNED LONG INT
| UNSIGNED LONG LONG
;

array-type
Expand Down Expand Up @@ -326,6 +343,7 @@ primary-no-array-creation-expression
{
$$ = $1;
}
| DOUBLE_COLON IDENTIFIER_WITH_KEYWORD
| element-access
{
$$ = $1;
Expand Down Expand Up @@ -855,6 +873,7 @@ typeof-expression
sizeof-expression
: SIZEOF OPEN_PARENS STARS type-with-interr CLOSE_PARENS
| SIZEOF OPEN_PARENS type-with-interr CLOSE_PARENS
| SIZEOF type-with-interr
;


Expand Down Expand Up @@ -1224,6 +1243,8 @@ statement
| declaration-statement
| embedded-statement
;




embedded-statement
Expand All @@ -1232,6 +1253,8 @@ embedded-statement
| statement-expression block
| statement-expression SEMICOLON
| statement-expression local-rank-specifiers ASSIGN variable-initializer SEMICOLON
| statement-expression local-rank-specifiers SEMICOLON
| statement-expression local-rank-specifiers COMMA local-variable-declarators SEMICOLON
| selection-statement
| iteration-statement
| jump-statement
Expand Down Expand Up @@ -2117,16 +2140,31 @@ interface-indexer-declaration
/* C.2.8 Structs */
struct-declaration
: STRUCT struct-body
| STRUCT IDENTIFIER_WITH_TEMPLATE OPEN_PARENS CLOSE_PARENS struct-method-body
| STRUCT IDENTIFIER_WITH_TEMPLATE OPEN_PARENS formal-parameter-list CLOSE_PARENS struct-method-body
| STRUCT type IDENTIFIER_WITH_TEMPLATE OPEN_PARENS CLOSE_PARENS struct-method-body
| STRUCT type IDENTIFIER_WITH_TEMPLATE OPEN_PARENS formal-parameter-list CLOSE_PARENS struct-method-body
| STRUCT IDENTIFIER_WITH_TEMPLATE SEMICOLON
| STRUCT type IDENTIFIER_WITH_TEMPLATE SEMICOLON
| STRUCT IDENTIFIER_WITH_TEMPLATE struct-body
| STRUCT IDENTIFIER_WITH_TEMPLATE struct-body SEMICOLON
| STRUCT IDENTIFIER_WITH_TEMPLATE struct-interfaces struct-body
| STRUCT IDENTIFIER_WITH_TEMPLATE struct-interfaces struct-body SEMICOLON
| modifiers STRUCT struct-body
| modifiers STRUCT IDENTIFIER_WITH_TEMPLATE SEIMCOLON
| modifiers STRUCT type IDENTIFIER_WITH_TEMPLATE SEMICOLON
| modifiers STRUCT IDENTIFIER_WITH_TEMPLATE struct-body
| modifiers STRUCT IDENTIFIER_WITH_TEMPLATE struct-interfaces struct-body
| modifiers STRUCT IDENTIFIER_WITH_TEMPLATE struct-body SEMICOLON
| modifiers STRUCT IDENTIFIER_WITH_TEMPLATE struct-interfaces struct-body SEMICOLON
| modifiers STRUCT struct-body IDENTIFIER_WITH_TEMPLATE SEMICOLON
| CONST struct-declaration
| STRUCT struct-body IDENTIFIER_WITH_TEMPLATE SEMICOLON
;

struct-method-body
: CONST block
| block
;

struct-interfaces
Expand Down Expand Up @@ -2161,7 +2199,7 @@ struct-member-declaration
{
$$ = $1;
}
| method-declaration
| class-method-declaration
{
$$ = $1;
}
Expand All @@ -2176,19 +2214,15 @@ struct-member-declaration
| operator-declaration
{
$$ = $1;
}
| constructor-declaration
{
$$ = $1;
}
}
| static-constructor-declaration
{
$$ = $1;
}
| type-declaration
{
$$ = $1;
}
}
;


Expand All @@ -2211,6 +2245,13 @@ block_or_statement
| namespace-declaration
| struct-declaration
| enum-declaration
| extern-declaration
;

extern-declaration
: EXTERN STRING_LITERAL OPEN_BRACE block_or_statement_list CLOSE_BRACE
| EXTERN STRING_LITERAL OPEN_BRACE CLOSE_BRACE
| EXTERN class-method-declaration
;

namespace-declaration
Expand Down Expand Up @@ -2359,9 +2400,9 @@ modifier
| READONLY
| VOLATILE
| VIRTUAL
| OVERRIDE
| EXTERN
| OVERRIDE
| IDENTIFIER STATIC
| TYPEDEF
;

modifiers
Expand Down Expand Up @@ -2469,11 +2510,7 @@ class-member-declaration
| operator-declaration
{
$$ = $1;
}
| constructor-declaration
{
$$ = $1;
}
}
| static-constructor-declaration
{
$$ = $1;
Expand Down Expand Up @@ -2585,7 +2622,7 @@ class-method-declaration
| class-method-header block SEMICOLON
| class-method-header ctor-initializer block
| class-method-header block
| class-method-header SEMICOLON
| class-method-header SEMICOLON
| class-method-header
;

Expand All @@ -2595,37 +2632,35 @@ method-prefixs
;

method-prefix
: CONST
: CONST type
| CONST
| OVERRIDE
;


class-method-header
: member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| type member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
: member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| type member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| attributes type member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| modifiers type member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| type member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| modifiers type member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| type member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| type OPEN_PARENS formal-parameter-list CLOSE_PARENS
| type OPEN_PARENS CLOSE_PARENS
| modifiers type member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| attributes type member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| attributes modifiers type member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| attributes modifiers type member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| member-name-with-double-colon
| class-method-header IDENTIFIER
| class-method-header ASSIGN variable-initializer

| class-method-header CONST ASSIGN variable-initializer
;

| member-name-with-double-colon
| class-method-header IDENTIFIER
| class-method-header ASSIGN variable-initializer
| class-method-header CONST ASSIGN variable-initializer
;

method-header
: method-types member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| method-types member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| attributes method-types member-name-with-double-colon OPEN_PARENS CLOSE_PARENS
| attributes method-types member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
| attributes method-types member-name-with-double-colon OPEN_PARENS formal-parameter-list CLOSE_PARENS
;


Expand Down Expand Up @@ -2690,11 +2725,10 @@ IDENTIFIER_WITH_KEYWORD
| TYPE
| THIS
| ASYNC
| VOLATILE
| STRING
| DOTS
| OBJECT
| VOLATILE
| DOTS
| DELEGATE
| OPERATOR
| literal
;

Expand Down Expand Up @@ -2817,11 +2851,12 @@ constructor-declaration
;

constructor-declarator
: IDENTIFIER_WITH_KEYWORD OPEN_PARENS formal-parameter-list CLOSE_PARENS
| IDENTIFIER_WITH_KEYWORD OPEN_PARENS CLOSE_PARENS
| IDENTIFIER_WITH_KEYWORD OPEN_PARENS member-name-with-double-colon-list CLOSE_PARENS
| IDENTIFIER_WITH_KEYWORD OPEN_PARENS CLOSE_PARENS ctor-initializer
| IDENTIFIER_WITH_KEYWORD OPEN_PARENS member-name-with-double-colon-list CLOSE_PARENS ctor-initializer
: type OPEN_PARENS formal-parameter-list CLOSE_PARENS
| type OPEN_PARENS formal-parameter-list CLOSE_PARENS ctor-initializer
| type OPEN_PARENS CLOSE_PARENS
| type OPEN_PARENS member-name-with-double-colon-list CLOSE_PARENS
| type OPEN_PARENS CLOSE_PARENS ctor-initializer
| type OPEN_PARENS member-name-with-double-colon-list CLOSE_PARENS ctor-initializer
;

constructor-initializer
Expand Down
13 changes: 5 additions & 8 deletions grammar/cpp.jisonlex
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ INTEGER_LITERAL {Hexadecimal_integer_literal}|{Decimal_integer_l
Decimal_integer_literal {Decimal_digits}{Integer_type_suffix}?
Decimal_digits {DECIMAL_DIGIT}+
DECIMAL_DIGIT [0-9]
Integer_type_suffix 'UL'|'Ul'|'uL'|'ul'|'LU'|'Lu'|'LL'|'lU'|'lu'|'ll'|'U'|'u'|'L'|'l'|'i64'
Integer_type_suffix 'ULL'|'UL'|'Ul'|'uL'|'ul'|'LU'|'Lu'|'LL'|'lU'|'lu'|'ll'|'U'|'u'|'L'|'l'|'i64'
Hexadecimal_integer_literal ('0x'{Hex_digits}{Integer_type_suffix}?) | ('0X'{Hex_digits}{Integer_type_suffix}?)
Hex_digits {HEX_DIGIT}+
HEX_DIGIT [0-9a-fA-F]
Expand Down Expand Up @@ -215,17 +215,15 @@ SINGLE_PREPROCESSING [#] {Input_characters}?
"foreach" return 'FOREACH';
"goto" return 'GOTO';
"if" return 'IF';
"implicit" return 'IMPLICIT';
"int" return 'INT';
"implicit" return 'IMPLICIT';
"interface" return 'INTERFACE';
"internal" return 'INTERNAL';
"is" return 'IS';
"lock" return 'LOCK';
"long" return 'LONG';
"namespace" return 'NAMESPACE';
"new" return 'NEW';
"null" return 'NULL';
"object" return 'OBJECT';
"null" return 'NULL';
"operator" return 'OPERATOR';
"override" return 'OVERRIDE';
"params" return 'PARAMS';
Expand All @@ -239,8 +237,7 @@ SINGLE_PREPROCESSING [#] {Input_characters}?
"short" return 'SHORT';
"sizeof" return 'SIZEOF';
"stackalloc" return 'STACKALLOC';
"static" return 'STATIC';
"string" return 'STRING';
"static" return 'STATIC';
"struct" return 'STRUCT';
"switch" return 'SWITCH';
"this" return 'THIS';
Expand Down Expand Up @@ -374,7 +371,7 @@ SINGLE_PREPROCESSING [#] {Input_characters}?
//this.parseError("Invalid bitshift/template expression. Try grouping with parantheses",{text:yytext,token:'',line:yylineno})
test1 = false;
this.unput(r.substring(2,r.length));
return 'LSHIFT';
return 'OP_LEFT_SHIFT';
break;
} else {
test1 = true;
Expand Down
Loading

0 comments on commit c12ab42

Please sign in to comment.