Il 02/10/2012 15:59, Holger Hans Peter Freyther ha scritto: > From: Holger Hans Peter Freyther <[email protected]> > > 2012-10-02 Holger Freyther <[email protected]> > > * tests/stcompiler.st: Add testcase for pragma parsing. > * tests/stcompiler.ok: Update the test result. > > 2012-10-02 Holger Freyther <[email protected]> > > * GSTParser.st: Change GSTFileInParser>>#parseClassTag to parse > more complicated pragmas. > --- > ChangeLog | 5 +++++ > packages/stinst/parser/ChangeLog | 5 +++++ > packages/stinst/parser/GSTParser.st | 19 +++++++++++++------ > tests/stcompiler.st | 7 +++++++ > 4 files changed, 30 insertions(+), 6 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 8c08ade..91c384e 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,8 @@ > +2012-10-02 Holger Freyther <[email protected]> > + > + * tests/stcompiler.st: Add testcase for pragma parsing. > + * tests/stcompiler.ok: Update the test result. > + > 2012-09-29 Holger Freyther <[email protected]> > > * scripts/Convert.st: Collect all rewrite expressions and parse > diff --git a/packages/stinst/parser/ChangeLog > b/packages/stinst/parser/ChangeLog > index 31bb50c..58affee 100644 > --- a/packages/stinst/parser/ChangeLog > +++ b/packages/stinst/parser/ChangeLog > @@ -1,3 +1,8 @@ > +2012-10-02 Holger Freyther <[email protected]> > + > + * GSTParser.st: Change GSTFileInParser>>#parseClassTag to parse > + more complicated pragmas. > + > 2012-09-29 Holger Freyther <[email protected]> > > * RBParser.st: Add RBScanner>>#digitValue:. > diff --git a/packages/stinst/parser/GSTParser.st > b/packages/stinst/parser/GSTParser.st > index c84410a..9e1d0ef 100644 > --- a/packages/stinst/parser/GSTParser.st > +++ b/packages/stinst/parser/GSTParser.st > @@ -237,21 +237,28 @@ STInST.STFileInParser subclass: GSTFileInParser [ > ] > > parseClassTag [ > - | selector argument stmt | > + | selectors arguments stmt | > > self skipExpectedToken: #<. > > (currentToken isKeyword) > - ifTrue: [selector := currentToken value asSymbol. self step] > ifFalse: [self parserError: 'expected keyword']. > - > - argument := self parsePrimitiveObject. > + > + selectors := OrderedCollection new. > + arguments := OrderedCollection new. > + > + "Consume all keywords and literals of the pragma" > + [currentToken isKeyword] whileTrue: [ > + selectors add: currentToken. self step. > + arguments add: self parsePrimitiveObject. > + ]. > + > self skipExpectedToken: #>. > > stmt := RBMessageNode > receiver: taggee > - selector: selector > - arguments: { argument }. > + selectorParts: selectors > + arguments: arguments. > self evaluateStatement: stmt. > ] > > diff --git a/tests/stcompiler.st b/tests/stcompiler.st > index 084f5f9..8f67250 100644 > --- a/tests/stcompiler.st > +++ b/tests/stcompiler.st > @@ -104,6 +104,13 @@ literalValueFoo12345 > Eval [ > | classes | > > + "Attempt to parse a pragma with multiple parameters" > + classes := STInST.STClassLoader new > + parseSmalltalkStream: 'Object subclass: Bla [ > + <pragma: 1 withParam: 3> ]' readStream > + with: STInST.GSTFileInParser. > + > + "Check if the proxy has a proper behavior" > classes := STInST.STClassLoader new > parseSmalltalkStream: 'Object subclass: Foo []' readStream > with: STInST.GSTFileInParser. >
Applied. Paolo _______________________________________________ help-smalltalk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-smalltalk
