# HG changeset patch # User Jan Vrany # Date 1433309029 -3600 # Node ID 34ee0d3c72e73131f91b0ccea280261ce2315f76 # Parent 5b0254cca4db7a66b9b5a4e4e84a7fb3cb38d4c7 Introduced PPCMappedActionNode for PPMappedActionParser. It's compilation is not yet ideal, bot works for now. diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/Make.proto --- a/compiler/Make.proto Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/Make.proto Wed Jun 03 06:23:49 2015 +0100 @@ -217,6 +217,7 @@ $(OUTDIR)PPCTokenChoiceNode.$(O) PPCTokenChoiceNode.$(H): PPCTokenChoiceNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCChoiceNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) $(OUTDIR)PPCTrimNode.$(O) PPCTrimNode.$(H): PPCTrimNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCSequenceNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) $(OUTDIR)PPCTrimmingCharacterTokenNode.$(O) PPCTrimmingCharacterTokenNode.$(H): PPCTrimmingCharacterTokenNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCListNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCTrimmingTokenNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) +$(OUTDIR)PPCMappedActionNode.$(O) PPCMappedActionNode.$(H): PPCMappedActionNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCAbstractActionNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCActionNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) $(OUTDIR)PPCTokenStarMessagePredicateNode.$(O) PPCTokenStarMessagePredicateNode.$(H): PPCTokenStarMessagePredicateNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) $(OUTDIR)PPCTokenStarSeparatorNode.$(O) PPCTokenStarSeparatorNode.$(H): PPCTokenStarSeparatorNode.st $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCDelegateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCStarNode.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/compiler/PPCTokenStarMessagePredicateNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/goodies/petitparser/PPActionParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPAndParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCharSetPredicate.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPChoiceParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPContext.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPEndOfInputParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPEpsilonParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPFailure.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPFlattenParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPListParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPLiteralObjectParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPLiteralParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPLiteralSequenceParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPNotParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPOptionalParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPPluggableParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPPossessiveRepeatingParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPPredicateObjectParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPPredicateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPRepeatingParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPSequenceParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPStream.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPToken.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPTokenParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPTrimmingParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/parsers/java/PPJavaWhitespaceParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk/PPSmalltalkGrammar.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk/PPSmalltalkTokenParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk/PPSmalltalkWhitespaceParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(STCHDR) diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/Make.spec --- a/compiler/Make.spec Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/Make.spec Wed Jun 03 06:23:49 2015 +0100 @@ -138,6 +138,7 @@ PPCTokenChoiceNode \ PPCTrimNode \ PPCTrimmingCharacterTokenNode \ + PPCMappedActionNode \ PPCTokenStarMessagePredicateNode \ PPCTokenStarSeparatorNode \ @@ -232,6 +233,7 @@ $(OUTDIR_SLASH)PPCTokenChoiceNode.$(O) \ $(OUTDIR_SLASH)PPCTrimNode.$(O) \ $(OUTDIR_SLASH)PPCTrimmingCharacterTokenNode.$(O) \ + $(OUTDIR_SLASH)PPCMappedActionNode.$(O) \ $(OUTDIR_SLASH)PPCTokenStarMessagePredicateNode.$(O) \ $(OUTDIR_SLASH)PPCTokenStarSeparatorNode.$(O) \ $(OUTDIR_SLASH)extensions.$(O) \ diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/PPCCodeBlock.st --- a/compiler/PPCCodeBlock.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/PPCCodeBlock.st Wed Jun 03 06:23:49 2015 +0100 @@ -44,7 +44,9 @@ (aStringOrBlockOrRBParseNode isKindOf: RBProgramNode) ifTrue:[ aStringOrBlockOrRBParseNode isSequence ifTrue:[ aStringOrBlockOrRBParseNode temporaries do:[:e | - self allocateTemporaryVariableNamed: e name. + (temporaries includes: e name) ifFalse:[ + temporaries add: e name + ]. ]. aStringOrBlockOrRBParseNode statements do:[:e| buffer nextPutAll: e formattedCode; nextPut: $.. @@ -61,7 +63,7 @@ ]. "Created: / 01-06-2015 / 21:07:10 / Jan Vrany " - "Modified: / 02-06-2015 / 00:06:32 / Jan Vrany " + "Modified: / 03-06-2015 / 05:52:39 / Jan Vrany " ! codeIndent diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/PPCCodeGenerator.st --- a/compiler/PPCCodeGenerator.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/PPCCodeGenerator.st Wed Jun 03 06:23:49 2015 +0100 @@ -400,6 +400,44 @@ compiler add: '].'. ! +visitMappedActionNode: node + | blockNode blockBody | + + blockNode := node block ast copy. + blockBody := blockNode body. + + "Block return value is return value of last statement. + So if the method is not inline, make last statement a return. + if the method is inline, make it assignment to retvalVar." + compiler currentMethod isInline ifTrue:[ + | assignment | + + assignment := RBAssignmentNode variable: (RBVariableNode named: self retvalVar) value: blockBody statements last. + blockBody replaceNode: blockBody statements last withNode: assignment. + ] ifFalse:[ + | return | + + return := RBReturnNode value: blockBody statements last. + blockBody replaceNode: blockBody statements last withNode: return. + ]. + + compiler codeStoreValueOf: [ self visit: node child ] intoVariable: self retvalVar. + compiler codeIf: 'error' then: [ + compiler codeReturn: 'failure'. + ] else: [ + "First, extract mapped elements to variable..." + blockNode arguments withIndexDo:[ :arg :idx | + compiler allocateTemporaryVariableNamed: arg name. + compiler codeAssign: (self retvalVar , ' at: ', idx printString) to: arg name. + compiler add: '.'. + ]. + compiler code: blockBody. + ] + + "Created: / 02-06-2015 / 17:28:55 / Jan Vrany " + "Modified: / 03-06-2015 / 06:10:09 / Jan Vrany " +! + visitMessagePredicateNode: node compiler add: '(context peek ', node message, ') ifFalse: ['. compiler codeError: 'predicate not found'. diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/PPCInlinedMethod.st --- a/compiler/PPCInlinedMethod.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/PPCInlinedMethod.st Wed Jun 03 06:23:49 2015 +0100 @@ -9,6 +9,7 @@ category:'PetitCompiler-Compiler-Codegen' ! + !PPCInlinedMethod methodsFor:'as yet unclassified'! call @@ -39,3 +40,10 @@ "Created: / 23-04-2015 / 21:06:12 / Jan Vrany " ! ! +!PPCInlinedMethod class methodsFor:'documentation'! + +version_HG + + ^ '$Changeset: $' +! ! + diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/PPCMappedActionNode.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compiler/PPCMappedActionNode.st Wed Jun 03 06:23:49 2015 +0100 @@ -0,0 +1,19 @@ +"{ Package: 'stx:goodies/petitparser/compiler' }" + +"{ NameSpace: Smalltalk }" + +PPCActionNode subclass:#PPCMappedActionNode + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'PetitParser-Parsers' +! + +!PPCMappedActionNode methodsFor:'visiting'! + +accept: visitor + ^ visitor visitMappedActionNode: self + + "Created: / 02-06-2015 / 17:27:54 / Jan Vrany " +! ! + diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/PPCMethod.st --- a/compiler/PPCMethod.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/PPCMethod.st Wed Jun 03 06:23:49 2015 +0100 @@ -116,7 +116,7 @@ innerBlock := PPCCodeBlock new. innerBlock indentationLevel: outerBlock indentationLevel + 1. [ - buffer addOnLine:'['. + buffer addOnLine:'['; nl; codeIndent. buffer := innerBlock. self code: contents. ] ensure:[ @@ -130,6 +130,7 @@ ] "Created: / 01-06-2015 / 22:33:21 / Jan Vrany " + "Modified: / 03-06-2015 / 06:11:32 / Jan Vrany " ! ! !PPCMethod methodsFor:'code generation - indenting'! diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/PPCNodeVisitor.st --- a/compiler/PPCNodeVisitor.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/PPCNodeVisitor.st Wed Jun 03 06:23:49 2015 +0100 @@ -167,6 +167,12 @@ ^ self visitNode: node. ! +visitMappedActionNode: node + ^ self visitActionNode: node + + "Created: / 02-06-2015 / 17:28:30 / Jan Vrany " +! + visitMessagePredicateNode: node ^ self visitNode: node ! diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/PPMappedActionParser.st --- a/compiler/PPMappedActionParser.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/PPMappedActionParser.st Wed Jun 03 06:23:49 2015 +0100 @@ -9,6 +9,20 @@ category:'PetitParser-Parsers' ! +!PPMappedActionParser methodsFor:'*petitcompiler'! + +asCompilerNode + ^ PPCMappedActionNode new + name: self name; + block: block; + child: parser; + properties: properties; + parser: self; + yourself + + "Created: / 02-06-2015 / 17:27:21 / Jan Vrany " +! ! + !PPMappedActionParser methodsFor:'parsing'! parseOn: aPPContext diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/abbrev.stc --- a/compiler/abbrev.stc Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/abbrev.stc Wed Jun 03 06:23:49 2015 +0100 @@ -88,5 +88,6 @@ PPCTokenChoiceNode PPCTokenChoiceNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0 PPCTrimNode PPCTrimNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0 PPCTrimmingCharacterTokenNode PPCTrimmingCharacterTokenNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0 +PPCMappedActionNode PPCMappedActionNode stx:goodies/petitparser/compiler 'PetitParser-Parsers' 0 PPCTokenStarMessagePredicateNode PPCTokenStarMessagePredicateNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0 PPCTokenStarSeparatorNode PPCTokenStarSeparatorNode stx:goodies/petitparser/compiler 'PetitCompiler-Nodes' 0 diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/bc.mak --- a/compiler/bc.mak Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/bc.mak Wed Jun 03 06:23:49 2015 +0100 @@ -164,6 +164,7 @@ $(OUTDIR)PPCTokenChoiceNode.$(O) PPCTokenChoiceNode.$(H): PPCTokenChoiceNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCChoiceNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR) $(OUTDIR)PPCTrimNode.$(O) PPCTrimNode.$(H): PPCTrimNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCSequenceNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR) $(OUTDIR)PPCTrimmingCharacterTokenNode.$(O) PPCTrimmingCharacterTokenNode.$(H): PPCTrimmingCharacterTokenNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCListNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCTrimmingTokenNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR) +$(OUTDIR)PPCMappedActionNode.$(O) PPCMappedActionNode.$(H): PPCMappedActionNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCAbstractActionNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCActionNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR) $(OUTDIR)PPCTokenStarMessagePredicateNode.$(O) PPCTokenStarMessagePredicateNode.$(H): PPCTokenStarMessagePredicateNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR) $(OUTDIR)PPCTokenStarSeparatorNode.$(O) PPCTokenStarSeparatorNode.$(H): PPCTokenStarSeparatorNode.st $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCDelegateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarMessagePredicateNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCStarNode.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\compiler\PPCTokenStarMessagePredicateNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR) $(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\goodies\petitparser\PPActionParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPAndParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCharSetPredicate.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPChoiceParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPContext.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPEndOfInputParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPEpsilonParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPFailure.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPFlattenParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPListParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPLiteralObjectParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPLiteralParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPLiteralSequenceParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPNotParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPOptionalParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPPluggableParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPPossessiveRepeatingParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPPredicateObjectParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPPredicateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPRepeatingParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPSequenceParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPStream.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPToken.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPTokenParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPTrimmingParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\parsers\java\PPJavaWhitespaceParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk\PPSmalltalkGrammar.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk\PPSmalltalkTokenParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk\PPSmalltalkWhitespaceParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(STCHDR) diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/benchmarks/Make.proto --- a/compiler/benchmarks/Make.proto Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/benchmarks/Make.proto Wed Jun 03 06:23:49 2015 +0100 @@ -34,7 +34,7 @@ # add the path(es) here:, # ********** OPTIONAL: MODIFY the next lines *** # LOCALINCLUDES=-Ifoo -Ibar -LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/petitparser -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/java -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/libbasic +LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/petitparser -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler -I$(INCLUDE_TOP)/stx/goodies/petitparser/compiler/tests/extras -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/java -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk -I$(INCLUDE_TOP)/stx/goodies/petitparser/parsers/smalltalk/tests -I$(INCLUDE_TOP)/stx/goodies/petitparser/tests -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic # if you need any additional defines for embedded C code, @@ -104,8 +104,13 @@ cd ../../../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../../refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" + cd ../../../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" + cd ../../../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../parsers/smalltalk && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" + cd ../../../sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" + cd ../../tests && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" + cd ../../parsers/smalltalk/tests && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/benchmarks/abbrev.stc --- a/compiler/benchmarks/abbrev.stc Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/benchmarks/abbrev.stc Wed Jun 03 06:23:49 2015 +0100 @@ -3,5 +3,5 @@ # it provides information about a classes filename, category and especially namespace. PPCBenchmark PPCBenchmark stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Core' 0 PPCSmalltalkNoopParser PPCSmalltalkNoopParser stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Parsers' 0 +PPCSmalltalkNoopParserTests PPCSmalltalkNoopParserTests stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Parsers-Tests' 1 stx_goodies_petitparser_compiler_benchmarks stx_goodies_petitparser_compiler_benchmarks stx:goodies/petitparser/compiler/benchmarks '* Projects & Packages *' 3 -PPCSmalltalkNoopParserTests PPCSmalltalkNoopParserTests stx:goodies/petitparser/compiler/benchmarks 'PetitCompiler-Benchmarks-Parsers-Tests' 1 diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/benchmarks/bc.mak --- a/compiler/benchmarks/bc.mak Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/benchmarks/bc.mak Wed Jun 03 06:23:49 2015 +0100 @@ -35,7 +35,7 @@ -LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\petitparser -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\java -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\libbasic +LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\petitparser -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler -I$(INCLUDE_TOP)\stx\goodies\petitparser\compiler\tests\extras -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\java -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk -I$(INCLUDE_TOP)\stx\goodies\petitparser\parsers\smalltalk\tests -I$(INCLUDE_TOP)\stx\goodies\petitparser\tests -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic LOCALDEFINES= STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME) @@ -54,8 +54,13 @@ pushd ..\..\..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\..\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " + pushd ..\..\..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\.. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " + pushd ..\..\..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\parsers\smalltalk & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " + pushd ..\..\..\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " + pushd ..\..\tests & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " + pushd ..\..\parsers\smalltalk\tests & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/benchmarks/stx_goodies_petitparser_compiler_benchmarks.st --- a/compiler/benchmarks/stx_goodies_petitparser_compiler_benchmarks.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/benchmarks/stx_goodies_petitparser_compiler_benchmarks.st Wed Jun 03 06:23:49 2015 +0100 @@ -61,7 +61,10 @@ ^ #( #'stx:goodies/petitparser' "PPCompositeParser - superclass of PPCSmalltalkNoopParser" #'stx:goodies/petitparser/parsers/smalltalk' "PPSmalltalkGrammar - superclass of PPCSmalltalkNoopParser" - #'stx:libbasic' "Autoload - superclass of PPCSmalltalkNoopParserTests" + #'stx:goodies/petitparser/parsers/smalltalk/tests' "PPSmalltalkGrammarTests - superclass of PPCSmalltalkNoopParserTests" + #'stx:goodies/petitparser/tests' "PPAbstractParserTest - superclass of PPCSmalltalkNoopParserTests" + #'stx:goodies/sunit' "TestAsserter - superclass of PPCSmalltalkNoopParserTests" + #'stx:libbasic' "LibraryDefinition - superclass of stx_goodies_petitparser_compiler_benchmarks" ) ! @@ -105,8 +108,8 @@ " or ( attributes...) in load order" PPCBenchmark PPCSmalltalkNoopParser + (PPCSmalltalkNoopParserTests autoload) #'stx_goodies_petitparser_compiler_benchmarks' - (PPCSmalltalkNoopParserTests autoload) ) ! diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/libInit.cc --- a/compiler/libInit.cc Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/libInit.cc Wed Jun 03 06:23:49 2015 +0100 @@ -114,6 +114,7 @@ _PPCTokenChoiceNode_Init(pass,__pRT__,snd); _PPCTrimNode_Init(pass,__pRT__,snd); _PPCTrimmingCharacterTokenNode_Init(pass,__pRT__,snd); +_PPCMappedActionNode_Init(pass,__pRT__,snd); _PPCTokenStarMessagePredicateNode_Init(pass,__pRT__,snd); _PPCTokenStarSeparatorNode_Init(pass,__pRT__,snd); diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/stx_goodies_petitparser_compiler.st --- a/compiler/stx_goodies_petitparser_compiler.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/stx_goodies_petitparser_compiler.st Wed Jun 03 06:23:49 2015 +0100 @@ -197,6 +197,7 @@ PPCTokenChoiceNode PPCTrimNode PPCTrimmingCharacterTokenNode + PPCMappedActionNode PPCTokenStarMessagePredicateNode PPCTokenStarSeparatorNode ) diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/tests/PPCCodeGeneratorTest.st --- a/compiler/tests/PPCCodeGeneratorTest.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/tests/PPCCodeGeneratorTest.st Wed Jun 03 06:23:49 2015 +0100 @@ -422,6 +422,25 @@ self assert: parser fail: 'boo'. ! +testMappedActionNode1 + node := ((#letter asParser , #letter asParser) + map:[:a :b | String with:a with:b ]) asCompilerTree. + self compileTree:node. + self + assert:parser + parse:'ab' + to:'ab'. + self + assert:parser + parse:'cz' + to:'cz'. + self assert:parser fail:''. + self assert:parser fail:'asd'. + + "Created: / 02-06-2015 / 17:04:35 / Jan Vrany " + "Modified: / 03-06-2015 / 06:10:31 / Jan Vrany " +! + testMessagePredicate | messageNode | messageNode := PPCMessagePredicateNode new diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/tests/extras/Make.proto --- a/compiler/tests/extras/Make.proto Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/tests/extras/Make.proto Wed Jun 03 06:23:49 2015 +0100 @@ -108,6 +108,7 @@ cd ../../../../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../../../sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../../tests && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" + cd ../../../parsers/java && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/tests/extras/PPLL1ExpressionGrammar.st --- a/compiler/tests/extras/PPLL1ExpressionGrammar.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/tests/extras/PPLL1ExpressionGrammar.st Wed Jun 03 06:23:49 2015 +0100 @@ -9,6 +9,7 @@ category:'PetitCompiler-Extras-Tests-Expressions' ! + !PPLL1ExpressionGrammar methodsFor:'as yet unclassified'! add @@ -78,3 +79,10 @@ ^ $+ asParser trimmingToken, term ! ! +!PPLL1ExpressionGrammar class methodsFor:'documentation'! + +version_HG + + ^ '$Changeset: $' +! ! + diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/tests/extras/abbrev.stc --- a/compiler/tests/extras/abbrev.stc Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/tests/extras/abbrev.stc Wed Jun 03 06:23:49 2015 +0100 @@ -9,6 +9,7 @@ PPCompiledExpressionGrammarResource PPCompiledExpressionGrammarResource stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1 PPCompiledExpressionGrammarTest PPCompiledExpressionGrammarTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1 PPCompiledJavaResource PPCompiledJavaResource stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Java' 1 +PPCompiledJavaSyntaxTest PPCompiledJavaSyntaxTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Java' 1 PPCompiledSmalltalkGrammarResource PPCompiledSmalltalkGrammarResource stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1 PPCompiledSmalltalkGrammarTests PPCompiledSmalltalkGrammarTests stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1 PPExpressionGrammar PPExpressionGrammar stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 0 @@ -26,4 +27,3 @@ PPCompiledSmalltalkVerificationTest PPCompiledSmalltalkVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1 PPTokenizedExpressionsVerificationTest PPTokenizedExpressionsVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Expressions' 1 PPTokenizedSmalltalkVerificationTest PPTokenizedSmalltalkVerificationTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Smalltalk' 1 -PPCompiledJavaSyntaxTest PPCompiledJavaSyntaxTest stx:goodies/petitparser/compiler/tests/extras 'PetitCompiler-Extras-Tests-Java' 1 diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/tests/extras/bc.mak --- a/compiler/tests/extras/bc.mak Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/tests/extras/bc.mak Wed Jun 03 06:23:49 2015 +0100 @@ -58,6 +58,7 @@ pushd ..\..\..\..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\..\..\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\..\tests & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " + pushd ..\..\..\parsers\java & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " diff -r 5b0254cca4db -r 34ee0d3c72e7 compiler/tests/extras/stx_goodies_petitparser_compiler_tests_extras.st --- a/compiler/tests/extras/stx_goodies_petitparser_compiler_tests_extras.st Tue Jun 02 17:25:57 2015 +0100 +++ b/compiler/tests/extras/stx_goodies_petitparser_compiler_tests_extras.st Wed Jun 03 06:23:49 2015 +0100 @@ -84,9 +84,10 @@ ^ #( #'stx:goodies/petitparser' "PPCompositeParser - superclass of PPExpressionGrammar" + #'stx:goodies/petitparser/parsers/java' "PPJavaLexiconTest - superclass of PPCompiledJavaSyntaxTest" #'stx:goodies/petitparser/tests' "PPAbstractParserTest - superclass of PPCCompiledJavaVerificationTest" #'stx:goodies/sunit' "TestAsserter - superclass of PPCCompiledJavaVerificationTest" - #'stx:libbasic' "Autoload - superclass of PPCompiledJavaSyntaxTest" + #'stx:libbasic' "LibraryDefinition - superclass of stx_goodies_petitparser_compiler_tests_extras" ) ! @@ -102,7 +103,6 @@ ^ #( #'stx:goodies/petitparser/compiler' "PPCArguments - referenced by PPCSmalltalkTests>>setUp" - #'stx:goodies/petitparser/parsers/java' "PPJavaSyntax - referenced by PPCCompiledJavaVerificationTest>>javaSyntax" #'stx:goodies/petitparser/parsers/smalltalk' "PPSmalltalkGrammar - referenced by PPCSmalltalkVerificationTest>>smalltalkGrammar" #'stx:libbasic2' "Random - referenced by PPCResources>>expressionOfSize:stream:" ) @@ -136,6 +136,7 @@ PPCompiledExpressionGrammarResource PPCompiledExpressionGrammarTest PPCompiledJavaResource + (PPCompiledJavaSyntaxTest autoload) PPCompiledSmalltalkGrammarResource PPCompiledSmalltalkGrammarTests PPExpressionGrammar @@ -153,7 +154,6 @@ PPCompiledSmalltalkVerificationTest PPTokenizedExpressionsVerificationTest PPTokenizedSmalltalkVerificationTest - (PPCompiledJavaSyntaxTest autoload) ) ! diff -r 5b0254cca4db -r 34ee0d3c72e7 tests/Make.proto --- a/tests/Make.proto Tue Jun 02 17:25:57 2015 +0100 +++ b/tests/Make.proto Wed Jun 03 06:23:49 2015 +0100 @@ -103,7 +103,6 @@ prereq: cd ../../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" - cd ../../../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" cd ../../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" diff -r 5b0254cca4db -r 34ee0d3c72e7 tests/PPExtensionTest.st --- a/tests/PPExtensionTest.st Tue Jun 02 17:25:57 2015 +0100 +++ b/tests/PPExtensionTest.st Wed Jun 03 06:23:49 2015 +0100 @@ -112,16 +112,18 @@ !PPExtensionTest methodsFor:'testing-stream'! testStream - | dot stream | - dot := (Character codePoint: 183) asString. - stream := 'abc' readStream asPetitStream. - self assert: stream class equals: PPStream. - self assert: stream printString equals: dot , 'abc'. - self assert: stream peek equals: $a. - self assert: stream uncheckedPeek equals: $a. - self assert: stream next equals: $a. - self assert: stream printString equals: 'a' , dot , 'bc'. - self assert: stream asPetitStream equals: stream + | dot stream | + dot := String with: (Character codePoint: 183). + stream := 'abc' readStream asPetitStream. + self assert: stream class equals: PPStream. + self assert: stream printString equals: dot , 'abc'. + self assert: stream peek equals: $a. + self assert: stream uncheckedPeek equals: $a. + self assert: stream next equals: $a. + self assert: stream printString equals: 'a' , dot , 'bc'. + self assert: stream asPetitStream equals: stream + + "Modified: / 02-06-2015 / 17:22:24 / Jan Vrany " ! testText diff -r 5b0254cca4db -r 34ee0d3c72e7 tests/bc.mak --- a/tests/bc.mak Tue Jun 02 17:25:57 2015 +0100 +++ b/tests/bc.mak Wed Jun 03 06:23:49 2015 +0100 @@ -53,7 +53,6 @@ prereq: pushd ..\..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " - pushd ..\..\..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd .. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) " pushd ..\..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "