Parser for the HyperTalk-like Hammer programming language, targeting the Leonie bytecode interpreter.
C++ C PHP Objective-C
Permalink
Failed to load latest commit information.
Forge.xcodeproj Track Leonie HEAD (better debug printing). Apr 28, 2016
ForgeFramework/ForgeFramework Add a function for debug printing a parse tree. Jun 4, 2016
Leonie @ aa74e09 Track Leonie HEAD (refCon parameter on GetParsentScript()). Jun 18, 2016
.gitignore Add missing gitignore. Apr 1, 2016
.gitmodules No longer use SSL key for auth for submodules. Mar 28, 2015
CAddCommandNode.cpp The "add" command now works, even for non-constant values to be added. Aug 15, 2011
CAddCommandNode.h The "add" command now works, even for non-constant values to be added. Aug 15, 2011
CAssignChunkArrayNode.cpp Add trailing returns to files to shut up warning. Jun 3, 2011
CAssignChunkArrayNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CAssignCommandNode.cpp Errors during parsing now carry along line number (and sometimes offs… Dec 19, 2013
CAssignCommandNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CChunkPropertyNodeTransformation.cpp Errors during parsing now carry along line number (and sometimes offs… Dec 19, 2013
CChunkPropertyNodeTransformation.h WIP on chunk properties Mar 30, 2013
CCodeBlock.cpp If an integer literal is > 32 bits, we now generate code to push it i… Feb 1, 2014
CCodeBlock.h If an integer literal is > 32 bits, we now generate code to push it i… Feb 1, 2014
CCodeBlockNode.cpp WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CCodeBlockNode.h Fix indentation of empty conditionals. Feb 4, 2014
CCommandNode.cpp WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CCommandNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CConcatOperatorNodeTransformation.cpp Errors during parsing now carry along line number (and sometimes offs… Dec 19, 2013
CConcatOperatorNodeTransformation.h Don't merge strings on instructions other than the string concatenati… Apr 14, 2013
CConcatSpaceOperatorNodeTransformation.cpp Errors during parsing now carry along line number (and sometimes offs… Dec 19, 2013
CConcatSpaceOperatorNodeTransformation.h Don't merge strings on instructions other than the string concatenati… Apr 14, 2013
CDivideCommandNode.cpp Fix subtract, multiply and divide commands Apr 2, 2013
CDivideCommandNode.h Fix subtract, multiply and divide commands Apr 2, 2013
CDownloadCommandNode.cpp Code formatting now also builds a quick jump table for the handlers. Feb 2, 2014
CDownloadCommandNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CForgeExceptions.cpp Errors during parsing now carry along line number (and sometimes offs… Dec 19, 2013
CForgeExceptions.h Whoops. Get the original's error, not our un-initialized object's. Nov 2, 2015
CFunctionCallNode.cpp WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CFunctionCallNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CFunctionDefinitionNode.cpp Remove log statement. Jan 4, 2014
CFunctionDefinitionNode.h Code formatting now also builds a quick jump table for the handlers. Feb 2, 2014
CGetArrayItemCountNode.cpp Add trailing returns to files to shut up warning. Jun 3, 2011
CGetArrayItemCountNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CGetArrayItemNode.cpp Add trailing returns to files to shut up warning. Jun 3, 2011
CGetArrayItemNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CGetChunkPropertyNode.cpp Now both getting and setting chunk properties should basically work. Apr 5, 2013
CGetChunkPropertyNode.h Now both getting and setting chunk properties should basically work. Apr 5, 2013
CGetParamCommandNode.cpp Errors during parsing now carry along line number (and sometimes offs… Dec 19, 2013
CGetParamCommandNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CGlobalPropertyNode.cpp WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CGlobalPropertyNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CIfNode.cpp Don’t crash when indenting text just because there’s no ‘else’ section. Feb 3, 2014
CIfNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CLineMarkerNode.cpp Add trailing returns to files to shut up warning. Jun 3, 2011
CLineMarkerNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CMakeChunkConstNode.cpp WIP on chunk properties Mar 30, 2013
CMakeChunkConstNode.h WIP on chunk properties Mar 30, 2013
CMakeChunkRefNode.cpp Errors during parsing now carry along line number (and sometimes offs… Dec 19, 2013
CMakeChunkRefNode.h WIP on chunk properties Mar 30, 2013
CMultiplyCommandNode.cpp Fix subtract, multiply and divide commands Apr 2, 2013
CMultiplyCommandNode.h Fix subtract, multiply and divide commands Apr 2, 2013
CNode.cpp WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CNodeTransformation.cpp Merge branch 'master' of github.com:uliwitness/Forge Mar 31, 2013
CNodeTransformation.h We now optimize using separate node transformation objects, in all ca… Mar 16, 2013
CObjectPropertyNode.cpp Make it possible to dynamically specify a property name based on an e… Jan 24, 2015
CObjectPropertyNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
COperatorNode.cpp Make optional constant-or-expression parameters at end of line work. … Jun 18, 2016
COperatorNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
COperatorNodeTransformation.cpp Wrote code for optimizations. Mar 16, 2013
COperatorNodeTransformation.h Oops. compile error. Apr 14, 2013
CParseErrorCommandNode.cpp Improve the debug output of parse error node in parse tree. Feb 2, 2014
CParseErrorCommandNode.h Less useless string copying. Feb 20, 2014
CParseTree.cpp WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CParseTree.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CParser.cpp Make optional constant-or-expression parameters at end of line work. … Jun 18, 2016
CParser.h Add support for parsing constants as parameters to host entries, as w… Jun 4, 2016
CPushValueCommandNode.cpp Add trailing returns to files to shut up warning. Jun 3, 2011
CPushValueCommandNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CPutCommandNode.cpp Make it possible to dynamically specify a property name based on an e… Jan 24, 2015
CPutCommandNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CReturnCommandNode.cpp Add trailing returns to files to shut up warning. Jun 3, 2011
CReturnCommandNode.h Add trailing returns to files to shut up warning. Jun 3, 2011
CSetChunkPropertyNode.cpp Add chunk property nodes. Jun 4, 2012
CSetChunkPropertyNode.h Add chunk property nodes. Jun 4, 2012
CSubtractCommandNode.cpp Fix subtract, multiply and divide commands Apr 2, 2013
CSubtractCommandNode.h Fix subtract, multiply and divide commands Apr 2, 2013
CToken.cpp Add debug log statements (ifdefed out) that helps us track what token… May 16, 2015
CToken.h Less useless string copying. Feb 20, 2014
CValueNode.cpp If an integer literal is > 32 bits, we now generate code to push it i… Feb 1, 2014
CValueNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CVariableEntry.cpp Created project 'Forge', which is to become the parser for Stacksmith… Oct 31, 2010
CVariableEntry.h Change row/column syntax used for table view fields from special fake… Nov 2, 2015
CWhileLoopNode.cpp WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
CWhileLoopNode.h WIP on code for using the parser to decide how deep to indent a script. Feb 2, 2014
ForgeTypes.h Add a few more tool constants so we don't need single-word names. Jun 18, 2016
LEOMsgCommandsGeneric.c Implement generic 'put' and 'delete' for Forge/command line tools. Apr 12, 2013
LEOMsgCommandsGeneric.h Restore 'put' command to Forge Apr 12, 2013
README.md Update Copyright. Jan 18, 2014
USAGE.txt Clean-up & housekeeping. Apr 7, 2013
UnitTest.hc Add test for \n and \r as end-of-value separator in associative arrays. May 1, 2016
headerimport.php Parse typedefs before classes, that way we can reduce method paramete… Feb 1, 2014
main.cpp Add --printresult option that prints the return value of the handler … Apr 28, 2016
testfile.hc Created project 'Forge', which is to become the parser for Stacksmith… Oct 31, 2010
testfile10.hc Forge: Take theCondition as a parameter instead of having to change t… Mar 30, 2011
testfile11.hc Forge/Leonie: Implemented repeat for each. Arrays and array values ca… Jan 8, 2011
testfile12.hc Forge/Leonie: WIP on implementing put before/after. Currently doesn't… Jan 24, 2011
testfile13.hc Fix parsing of one-line ‘if’ statements without an ‘else’ clause. Our… Dec 19, 2013
testfile14.hc Output errors more selectively, when we encounter them. Jan 4, 2014
testfile2.hc Created project 'Forge', which is to become the parser for Stacksmith… Oct 31, 2010
testfile3.hc Created project 'Forge', which is to become the parser for Stacksmith… Oct 31, 2010
testfile4.hc Created project 'Forge', which is to become the parser for Stacksmith… Oct 31, 2010
testfile5.hc Fixed parsing of global properties when read (instead of written). Apr 5, 2011
testfile6.hc Created project 'Forge', which is to become the parser for Stacksmith… Oct 31, 2010
testfile7.hc Forge: We can now parse and run testfile7.hc -- i.e. we can do expres… Dec 22, 2010
testfile8.hc Forge/Leonie: Implemented the return command. First attempt at making… Dec 19, 2010
testfile9.hc Forge: Added another test handler to testfile9. Mar 30, 2011

README.md

What is it

Forge is a parser for a HyperTalk-like programming language named Hammer. It is written in C++ and generates output for the Leonie bytecode interpreter and runtime.

How to build

There's an Xcode project that produces a command-line executable that runs any Hammer script file (.hc) you give it.

License

Copyright 2003-2014 by Uli Kusterer.

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

   1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required.

   2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.

   3. This notice may not be removed or altered from any source
   distribution.