+ xml node writer: write the op itself for TUnaryOpNode and TBinaryOpNode
+ node XML writer: visit children of TUnaryOpNode and TBinaryOpNode
+ introduced TNodeXMLWriter.VisitChildren for the unary and binary nodes as well
+ convert the segment node to xml as well
* refactored node xml writer visitor to use a VisitChildren method, to avoid repeating code
* formatting
+ also print the tree children for the data dir node in the XML writer
+ print the end directive subtree in the XML node writer
+ xml serialize the instruction prefix as well in the NodeXmlWriter
- removed the nil checks when traversing the tree in NodeXmlWriter
+ in ParseModule only add child, if not nil (ParseDirective can return nil)
+ added nil check in TNAryNode.AddChild
+ added forgotten call in TRegisterNode.Accept
+ write unexpected token diagnostic message in ParseE11
+ also support the end directive in the XML writer
+ added XML node writer
+ added TNodeVisitor
+ TOmfRecord_GRPDEF
+ TOmfRecord_SEGDEF
+ TOmfRecord_LNAMES
+ TOmfRecord_COMENT_EXPDEF
+ TOmfRecord_COMENT_IMPDEF
+ TOmfRecord_COMENT_Subtype
* raise EArgumentException instead of Exception in TOmfRecord_THEADR.DecodeFrom
+ TOmfRecord_COMENT
+ TOmfRecord_THEADR
+ introduced TOmfParsedRecord, based on my code, contributed to Free Pascal
+ added TOmfOrderedNameCollection class, based on my code, contributed to Free Pascal
* formatting
+ introduced the TOmfRawRecord class, based on my code, contributed to Free Pascal
+ added unit omf, based on my code, contributed to Free Pascal
+ added memory model, language and stack option to TModelDirNode
* check the current token, instead of the next token for the the dot simple seg dir
* the model token converted to include the dot
* update copyright year
+ prepend Dot before the .CODE, .DATA, .FARDATA, .CONST and .STACK directives; handle the dot being part of the token, when parsing these segment directives
* prepend dot before the CONST and FARDATA directives
+ scanner support for reading tokens, starting with dot
+ introduced ReadDotToken. No functional changes.
* update lpi
* code and data token contents renamed '.CODE' and '.DATA'. This will be handled in the scanner in the future.
* reverted previous commit. Handling .CODE and .DATA requires a different approach.
+ introduced TTokenInfo.DotDirOnly attribute
+ partial parsing of extern defs
+ parse simple seg dirs (unfinished)
+ parse the EQU directive
+ parse the model parameters
+ started parsing the model directive
* show also file position when printing an unknown directive message
+ parse the TITLE directive
+ support parenthesis in the scanner
* support more tokens in the scanner
+ print the identifier on unknown tokens
* fixed parsing in TParser.ParseE09
* save the module to a local var and finally free it
* return TModuleNode instance in TParser.ParseModule
+ introduced TAssumeNode
+ ParseDataDir now returns TDataDirNode
* return result of ParseSegmentDir and ParseEndSegmentDir in TParser.ParseDirective
+ introduced TEndDirectiveNode
+ introduced TSegmentEndDirNode
+ introduced TSegmentStartDirNode
* ParseDirective now returns a TNode
+ added NearFarTokens and DistanceTokens sets
+ added Near16, Near32, Far16, Far32 tokens
+ parse Size and SizeOf in expressions as well
* convert Width, Mask, Length and LengthOf in expressions to unary op nodes
+ introduced ParseIdentifier
+ introduced TIdentifierNode
+ introduced TModuleNode
+ added TSegmentNode
+ introduced TLabelNode
* made ParseExprList fill a TNAryNode
+ added TDollarNode
+ also parse MMX and SSE registers
+ also parse special registers
* unified parsing of segment and integer registers
+ introduced TPeriodNode
* made ParseInitValue to return a TNode
+ added TBinaryOpNode
+ introduced TUnaryOpNode
+ added TStringLiteralNode
+ added TIntegerLiteralNode
+ added TRegisterNode
+ started returning TNode in ParseExpr methods. Not all are implemented, yet.
+ ParseInstruction now returns a TAsmInstructionNode
+ added fields and methods to the TAsmInstructionNode class
+ instruction parsing
+ DataDir parsing
+ added DataDeclTokens
+ added DataTypeTokens
+ added an asmerrors unit and a TErrorHandler class
+ TAsmInstructionNode class
+ added TNAryNode.ChildrenCount and TNAryNode.AddChild
+ added TNAryNode
+ added TTernaryNode
+ added Nodes unit, containing the base classes for an AST - TNode, TUnaryNode, TBinaryNode
+ parsing of ASSUME
+ ParseE10
+ ParseE09