| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| |
| |
| |
| |
| | |
Conflicts:
cpp/include/Ice/Stream.h
cpp/include/Slice/Preprocessor.h
rb/ruby/Makefile.mak
|
| |
| |
| |
| | |
files.
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
only.) I couldn't avoid adding a few #ifdefs because of the different
64-bit integer APIs across Linux and Windows. (#including config.h
wasn't an option because that would have created a circular dependency
between Ice and Slice.)
Added sufficient test cases to convince myself that things actually work as
intended.
Will compile under Windows now, so bear with me if things are broken under
Windows for a few minutes...
Some things that aren't quite right yet:
- No support for universal character names (\uxxxx)
- gcc appears to have a preprocessor bug. For example, preprocessing a file
containing a single '@' character just echos that '@' character to the
output. According to the C++ spec, '@' should be translated to its
universal character name (because it isn't part of the basic C++ source
character set).
- Why is the Slice string type mapped to std::string? Given that we are
supposed to support unicode for everything, shouldn't that be mapped to
std::wstring?
Once Windows compiles OK, I'll start on the Java code generation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
metadata with at least one string in the list, or no metadata at all.
Updated scanner so backslash-escaped keywords can be used as identifiers.
Removed ''-style strings from scanner -- only ""-style is now legal.
Changed string literals to fully conform with ISO-C++ rules. (Not all legal
escape sequences were supported previously.)
Changed grammar to support concatenation of adjacent string literals.
Added support for constants. Parser and scanner are complete, but the
action for a constant definition is empty for now. Constant definitions
are supported for bool, byte, integers, floating point, strings, and
enums. Constants can be defined at global scope and module scope
(nowhere else). Syntax follows C++ syntax as much as it makes sense
(e.g., the l and u suffixes for integer constants are not supported).
|
|
|
|
|
| |
definitions. Changed parser to write diagnostics to stdout instead of
stderr.
|
| |
|
| |
|
|
|
|
|
| |
scanner and parser. Quite a few style fixes. Improved diagnostics in
many places and eliminated several more "parse error" conditions.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and use an "out" keyword instead. The old syntax still works, but now
prints a warning. Fixed up all the test cases that got broken by this
and add a new test case for out-of-order in and out parameters.
Refactored the grammar somewhat because, initially, out params added
something like 50 shift/reduce conflicts. One shift/reduce conflict
remains, caused by the addition of ICE_OUT to the last production in
Grammar.y. We could avoid the conflict by removing ICE_OUT from that
production, but then we wouldn't catch other errors anymore, such as an
attempt to use "out" as the name of an operation or interface. I've
added a warning to the Makefile to expect 1 shift/reduce conflict when
Grammar.y is rebuilt.
|
| |
|
| |
|
|
|