Commit Graph

123 Commits

Author SHA1 Message Date
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