60 Commits

Author SHA1 Message Date
6890ac97b5 Support inline/__inline 2018-05-12 11:54:14 -04:00
c5764ed15e allow asm volatile statements 2018-05-12 11:43:07 -04:00
b40f501d2a add asm statements/expressions 2018-05-12 11:41:45 -04:00
c5c0bddc33 Allow multiple consecutive string literals 2018-05-12 10:52:44 -04:00
2c33cccaf7 Allow multiple consecutive __attribute__ blocks 2018-05-09 20:51:22 -04:00
ee0dd63670 add support for __restrict keyword 2018-05-09 20:49:27 -04:00
fa32c9bba6 Allow TYPE_NAME or IDENTIFIER to follow struct/union 2018-05-09 20:27:29 -04:00
aa6ef6b8d6 Add gcc-style attributes to parser 2018-05-09 20:24:12 -04:00
625410faa0 Add some known built-in types to consider as TYPE_NAME tokens instead of IDENTIFIERs 2018-05-09 19:48:42 -04:00
25f7c43d3b lexer: return TYPE_NAME instead of IDENTIFIER for identifiers that were previously typedeffed 2018-05-08 22:16:53 -04:00
0a2e719f2c add list, declarator node types 2018-05-08 22:10:06 -04:00
86c6243053 turn on bison output file to see conflicts 2018-05-08 20:50:26 -04:00
d5ae35df60 introduce TYPE_NAME token type 2018-05-08 20:39:49 -04:00
584fdae2ba set token text to string literal value for string literal tokens 2018-05-08 20:26:34 -04:00
051dd9b9c1 fix indentation 2018-05-08 20:21:29 -04:00
24f18c5233 remove String module; use std::string 2018-05-08 20:13:47 -04:00
accaed47bc add infrastructure to keep track of observed type names in the future 2018-05-08 20:03:20 -04:00
07fb50bb86 convert main module to a C++ module 2018-05-08 19:59:57 -04:00
8733911e82 support C++ in build 2018-05-08 19:55:40 -04:00
600d01193c update to waf 2.0.7 2018-05-08 19:36:16 -04:00
895ea27016 parser rewrite according to ANSI C grammar
same problem as before - conflict in IDENTIFIER as a type name versus an actual identifier
2018-05-07 23:48:08 -04:00
a7d63e51e5 rewrite parser with C Syntax BNF file 2018-05-07 23:21:25 -04:00
e7835b4fac start rewriting grammar 2018-04-24 21:10:48 -04:00
89e003b330 another fix to error location reporting 2018-04-24 21:05:33 -04:00
3cd2d96611 Display original source file location for errors 2018-04-23 23:51:35 -04:00
49afce6095 use last_column instead of first_column for error column tracking 2018-04-23 23:26:43 -04:00
45de80c852 show source line on error 2018-04-23 23:11:34 -04:00
fc5dfb7744 move C code out of parser.y to parser.c 2018-04-23 22:48:59 -04:00
8db0a47fb4 remove user_action() prototype 2018-04-23 22:25:13 -04:00
57dcf9e62d create token nodes in lexer 2018-04-21 23:37:35 -04:00
89889b778f Add Node module 2018-04-18 21:16:32 -04:00
866dd42196 use %option noyywrap 2018-04-18 20:46:14 -04:00
b2072de717 Keep track of line number and filename from preprocessor output for error messages 2018-04-18 20:10:23 -04:00
74031d18d7 add String_new_size() 2018-04-18 19:59:32 -04:00
3508deecc5 finish adding grammar 2018-04-13 22:16:07 -04:00
9d2c41edc1 Start adding some grammar definition 2018-04-11 22:05:39 -04:00
50480d80b4 simpler octal escape pattern 2018-04-11 21:39:21 -04:00
5615c5781d allow hexadecimal and octal escapes within character constants 2018-04-11 21:38:58 -04:00
090521a805 allow leading "L" prefix for string constants 2018-04-11 21:36:15 -04:00
3170f0870c add octal escape in string 2018-04-11 21:35:03 -04:00
81614c41ab support all C character escape sequences 2018-04-11 21:29:18 -04:00
4ffc67919e allow "L" prefix for character constants 2018-04-11 21:28:13 -04:00
e51103149b fix floating point suffix 2018-04-11 21:25:37 -04:00
7149e3c5e3 allow sign after "e" in floating point constant 2018-04-11 21:24:13 -04:00
21a42232f0 allow "nn." or ".nn" for floating point numbers 2018-04-11 21:20:20 -04:00
75bda2b8ac allow float constants to have "e" suffix 2018-04-11 21:18:21 -04:00
14bb4f4705 add more tokens 2018-04-10 21:23:03 -04:00
bd220b9b14 Parse after preprocessing 2018-04-07 11:17:28 -04:00
a87b938234 Add some temporary code to preprocess with gcc -E 2018-04-07 11:06:47 -04:00
19c61a91fe add parse() 2018-04-07 10:06:49 -04:00