Daniel Kolesa
8ec7d1cc48
eolian: much better and stricter redefinition checking
...
We can now check redefinitions between different types of declarations,
such as redefinition of struct as variable etc.
@feature
2015-05-15 15:11:10 +01:00
Daniel Kolesa
e0fe487856
eolian: use fprintf(stderr) rather than eina_log for compile errors
2015-05-14 16:33:42 +01:00
Daniel Kolesa
9b167d953c
eolian: fix lexer assertion failure
...
The function was missing an "else", so a wrong branch was always
executed with errors at EOF. This fixes that.
@fix
2015-05-01 11:58:05 +01:00
Daniel Kolesa
a74000a65c
eolian: specialize tmp free for typedef (avoid double free issue)
...
@fix
2015-05-01 11:48:41 +01:00
Mike Blumenkrantz
5375e154fe
fix config.h inclusion across the tree
2014-09-23 15:56:46 -04:00
Daniel Kolesa
0be3aefdc7
eolian: remove some unused funcs
2014-09-22 12:47:30 +01:00
Daniel Kolesa
3d8069f226
eolian: remove str_items from temps
2014-09-12 15:04:18 +01:00
Daniel Kolesa
87559458f2
eolian: get rid of a list
2014-09-12 15:01:10 +01:00
Daniel Kolesa
a1646ff61d
eolian: remove eo_definitions
2014-09-12 13:42:53 +01:00
Daniel Kolesa
44cecb6a87
eolian: simplify more fill code
2014-09-11 11:48:46 +01:00
Daniel Kolesa
f55572d79e
eolian: remove Eo_Class_Def (fill bits still remaining)
2014-09-11 10:50:48 +01:00
Daniel Kolesa
7786b96359
eolian: builtin complex types
...
From now on, there are 5 builtin complex types, particularly accessor, array,
iterator, hash and list. All other types are simple - they can't have a complex
part. Also, the <> now binds to the type itself, not the pointer. More builtin
complex types will be added as needed.
2014-09-08 14:53:13 +01:00
Daniel Kolesa
99b03d4f3c
eolian: skip UTF-8 BOM if present
2014-09-05 10:04:11 +01:00
Daniel Kolesa
e6954d143d
eolian: drop Eina_Value
...
Because of Eina_Value being less than optimal in our usage, we're dropping it in Eolian.
This simplifies the code and makes it easier to bind to other languages, which
will aid new generators. Also, we're dropping long double support from eo files
and expressions as it causes an ABI breakage in gcc 4.4.
2014-08-21 09:26:05 +01:00
Daniel Kolesa
70bf1eac24
eolian: add infrastructure for globals and constants
...
Nothing parses yet, and no API is exposed. Also, move the remaining instances of file
inside of existing structures to Eolian_Object and parse basename only once.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
1cb8318991
eolian: support for single-line doc comments
2014-08-21 09:26:04 +01:00
Daniel Kolesa
1be7656af6
eolian: expression mode for lexer
...
This way we can only lex expr related tokens (operators etc.) when actually
about to parse an expression. That allows stuff like nested complex types
without the lexer treating the endings as right shift.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
eab668bb0f
eolian: expression improvements
...
Character literals now allow escape sequences. Strings created by
eolian_expression_value_to_literal are now fully escaped.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
8c1b9ed3e2
eolian: initial API for expression evaluation
...
This commit also does several side (related) changes. Particularly, it updates
the Eolian C generator to use the new API, it adds missing expr types (null, char)
and masks, updates the API dealing with default return values to use expressions
instead of strings and does several fixes (mainly in lexer) around the place.
It also disallows single quoted strings as those are reserved for characters.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
96f360a7d1
eolian: lexing of multichar binary operators
2014-08-21 09:26:03 +01:00
Daniel Kolesa
436a37f0b9
eolian: initial support for expression parsing
2014-08-21 09:26:03 +01:00
Daniel Kolesa
77ad5e3297
eolian: fix coverity defects
...
Fixes CID 1228630 and 1228631.
2014-07-23 00:48:27 +01:00
Daniel Kolesa
4f1f182a89
eolian: lexer line context push/pop/restore/clear
2014-07-22 15:44:23 +01:00
Daniel Kolesa
5d1cd61c92
eolian: put structs and typedefs right in the respective hashmaps without going through nodes
2014-07-21 11:42:05 +01:00
Daniel Kolesa
6c268d98e5
eolian: lexing of string literals (including support for escape sequences etc.)
2014-07-17 14:17:19 +01:00
Daniel Kolesa
e9e38b553b
eolian: lexing of number literals (integer and floating point, decimal and hex, no octal)
2014-07-17 13:07:39 +01:00
Daniel Kolesa
80165034ed
eolian: preliminary number constant stuff in eo_lexer
2014-07-16 16:18:13 +01:00
Daniel Kolesa
c636882158
eolian: remove TOK_EOF, replace with -1
2014-07-16 16:06:04 +01:00
Daniel Kolesa
226f417005
eolian: remove eo_lexer_get_until and allow just single-word value in the data: field of a class
2014-07-16 15:33:11 +01:00
Daniel Kolesa
9b2680ad6f
eolian: simplify the lexer (remove custom ident chars)
2014-07-16 14:46:38 +01:00
Daniel Kolesa
831ade54fa
eolian: also make time_t a builtin
2014-07-14 17:02:58 +01:00
Daniel Kolesa
3be0dce99d
eolian: builtin types size, ssize, intptr, uintptr, ptrdiff
2014-07-14 16:51:38 +01:00
Daniel Kolesa
f510b6de72
eolian: schar and uchar are now called byte and ubyte, char stays
...
Here, 'char' represents an actual character and is meant to be treated as so by generators.
The byte types represent a numerical value and should be treated numerically.
2014-07-14 16:25:26 +01:00
Daniel Kolesa
c9744596de
eolian: builtin bool type, and change the eo files to use that
2014-07-11 14:40:49 +01:00
Daniel Kolesa
7b9438e76e
eolian: refactoring: remove Eo_Type_Def
2014-07-10 15:10:24 +01:00
Daniel Kolesa
a03bef4734
eolian: get rid of Eo_Type_Def
2014-07-10 14:44:17 +01:00
Daniel Kolesa
6bd0e0ab7f
eolian: better struct support including an API for by-name lookup
2014-07-08 16:42:33 +01:00
Daniel Kolesa
9f17b08dfb
eolian: warning fix
2014-07-04 14:51:05 +01:00
Daniel Kolesa
8c80b1a7f4
eolian: rename the log domain
2014-07-03 01:50:47 +01:00
Daniel Kolesa
a621692fdd
eolian: use eina logging for error messages
2014-07-03 01:48:00 +01:00
Daniel Kolesa
61da74bc42
eolian: print error line with a caret
2014-07-03 00:30:39 +01:00
Daniel Kolesa
8d902a4820
eolian: keep track of column better
2014-07-03 00:14:28 +01:00
Daniel Kolesa
55e5e71593
eolian: use eina API
2014-07-03 00:05:16 +01:00
Daniel Kolesa
7d46c921cb
eolian: column information in error messages
2014-07-02 23:39:44 +01:00
Daniel Kolesa
f12b36e1c1
eolian: some dirty janitoring
2014-07-01 18:25:17 +01:00
Daniel Kolesa
39aad55991
eolian: support for void as separate type type
2014-06-30 23:07:32 +01:00
Daniel Kolesa
d5f4af5e61
eolian: different syntax for functions (func ret_type (arg_types))
2014-06-30 22:07:13 +01:00
Daniel Kolesa
2bdba6c850
eolian: type -> typedef
2014-06-30 17:20:39 +01:00
Daniel Kolesa
275103e1b0
eolian/lexer: new keyword (func) plus new token (->) - for function pointer types
2014-06-30 17:20:39 +01:00
Daniel Kolesa
ec057a089a
eolian: builtin fixed size integer types, floating point types and void
2014-06-30 17:20:39 +01:00