diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2015-04-17 16:30:43 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2015-04-17 16:30:43 +0200 |
commit | 1b5db339bb05f773a6a132be4c0b8cea54d50461 (patch) | |
tree | 5c7c767bc107eca66fdf6795777821572c5ec5af /cparser/pre_parser.mly | |
parent | 3d751c114fe4611a5b72e160127be09cf6c6cfec (diff) | |
download | compcert-kvx-1b5db339bb05f773a6a132be4c0b8cea54d50461.tar.gz compcert-kvx-1b5db339bb05f773a6a132be4c0b8cea54d50461.zip |
Experiment: support a subset of GCC's extended asm statements.
Diffstat (limited to 'cparser/pre_parser.mly')
-rw-r--r-- | cparser/pre_parser.mly | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/cparser/pre_parser.mly b/cparser/pre_parser.mly index ef356d3a..44a06f8a 100644 --- a/cparser/pre_parser.mly +++ b/cparser/pre_parser.mly @@ -616,7 +616,43 @@ jump_statement: {} asm_statement: -| ASM VOLATILE? LPAREN string_literals_list RPAREN SEMICOLON +| ASM asm_attributes LPAREN string_literals_list asm_arguments RPAREN SEMICOLON + {} + +asm_attributes: +| /* empty */ +| CONST asm_attributes +| VOLATILE asm_attributes + {} + +asm_arguments: +| /* empty */ +| COLON asm_operands +| COLON asm_operands COLON asm_operands +| COLON asm_operands COLON asm_operands COLON asm_flags + {} + +asm_operands: +| /* empty */ +| asm_operands_ne + {} + +asm_operands_ne: +| asm_operands_ne COMMA asm_operand +| asm_operand + {} + +asm_operand: +| asm_op_name string_literals_list LPAREN expression RPAREN + {} + +asm_op_name: +| /*empty*/ {} +| LBRACK i = general_identifier RBRACK { set_id_type i OtherId } + +asm_flags: +| string_literals_list +| string_literals_list COMMA asm_flags {} translation_unit_file: |