[Newcompiler] SmaCC error again: subscript is out of bounds

suen mathieu mathieusuen at yahoo.fr
Wed Jul 19 13:44:38 UTC 2006


Hi squeakers;

Ok I guess my previous question wasn't clear.
So could you try to compile the SqueakParser with the
grammar following.

>From time to time I have got an error saying :
"subscript is out of bounds: ..." :( and I don't know
why.

Also could you tell me who are able to answer me?

Thanks for your attention

===================================================
%id <name> <number> <negativeNumber> <binarySymbol>
<period>;
%start Sequence MethodPattern;

Method:
	MethodPattern Sequence						{#method:}
|	MethodPattern Pragmas Sequence			{#methodPragma:}
|	MethodPattern Pragmas Temporaries Pragmas Statements
{#methodPragmaTempsPragma:}
|	MethodPattern Temporaries Pragmas Statements
{#methodTempsPragma:};

MethodPattern:
	<name>										{#unaryMessage:}
|	<binarySymbol> Variable						{#messagePart:}
|	KeywordMethodPattern						{#first:};

KeywordMethodPattern:
	<keyword> Variable							{#messagePart:}
|	KeywordMethodPattern <keyword> Variable
{#addMessagePart:};

Pragmas:
	"<" PragmaMessage ">"				{#pragmaMessage:}
|	Pragmas "<" PragmaMessage ">"				{#pragmas:};

Sequence:
	Statements									{#sequence:}
|	Temporaries Statements						{#sequenceWithTemps:};

Temporaries:
	"||"											{#array}
|	"|" TemporaryVariables "|"					{#second:};

TemporaryVariables:
												{#array}
|	TemporaryVariables Variable				{#add:};

Statements:
												{#array}
|	StatementList <period>?						{#first:}
|	StatementList <period> "^" Expression <period>?
{#returnAdd:}
|	"^" Expression <period>?						{#return:};

StatementList:
	Expression									{#firstIn:}
|	StatementList <period> Expression				{#add3:};

Block:
	"[" BlockArgs "|" Sequence "]"					{#blockWithArgs:}
|	"[" Sequence "]"								{#blockNoArgs:}
|	"[" BlockArgs "]"								{#blockArgs:}
|	"[" BlockArgs "||" TemporaryVariables "|" Statements
"]" {#blockWithTemps:};

BlockArgs:
	":" Variable									{#secondIn:}
|	BlockArgs ":" Variable						{#add3:};

Expression:
	Assignment									{#first:}
|	Cascade										{#first:}
|	Primary									{#first:};

Primary:
	"(" Expression ")"								{#second:}
|	Array										{#first:}
|	Block										{#first:}
|	Literal										{#first:}
|	Variable									{#first:};

Assignment:
	Variable <assignment> Expression				{#assignment:};

Cascade:
	MessageSend								{#first:}
|	Cascade ";" Message							{#cascade:};

MessageSend:
	KeywordMessageSend						{#first:}
|	BinaryMessageSend							{#first:}
|	UnaryMessageSend							{#first:};

Message:
	UnaryMessage								{#first:}
|	BinaryMessage								{#first:}
|	KeywordMessage							{#first:};

KeywordMessageSend:
	BinaryMessageSend KeywordMessage			{#messageSend:}
|	UnaryMessageSend KeywordMessage			{#messageSend:}
|	Primary KeywordMessage					{#messageSend:};

KeywordMessage:
	<keyword> KeywordArgument				{#messagePart:}
|	KeywordMessage <keyword> KeywordArgument
{#addMessagePart:};

KeywordArgument:
	BinaryMessageSend							{#first:}
|	UnaryMessageSend							{#first:}
|	Primary									{#first:};

BinaryMessageSend:
	BinaryMessageSend BinaryMessage			{#messageSend:}
|	UnaryMessageSend BinaryMessage			{#messageSend:}
|	Primary BinaryMessage						{#messageSend:};

BinaryMessage :
	<binarySymbol> BinaryArgument				{#messagePart:};

BinaryArgument:
	UnaryMessageSend							{#first:}
|	Primary									{#first:};

UnaryMessageSend :
	UnaryMessageSend UnaryMessage			{#messageSend:}
|	Primary UnaryMessage						{#messageSend:};

UnaryMessage :
	<name>										{#unaryMessage:};

Array:
	"{" Statements "}"								{#array:};

Variable: 
	<name>										{#variable:};

Literal:
	"true"										{#litTrue:}
|	"false"										{#litFalse:}
|	"nil"										{#litNil:}
|	<number>									{#litNumber:}
|	<negativeNumber>							{#litNumber:} 
|	<character>									{#litChar:}
|	<string>										{#litString:}
|	"#" <string>									{#litStringSymbol:}
|	"#" <name>									{#litSymbol:}
|	"#" <binarySymbol>							{#litSymbol:}
|	"#" <keyword>								{#litSymbol:}
|	"#" <multikeyword>							{#litSymbol:}
|	"#" <alternateKeyword>						{#litSymbol:}
|	"#" "[" ByteArray "]"							{#litArray:}
|	"#" "(" LiteralArray ")"						{#litArray:}
|	"#:"								{#litString:};

ByteArray:
												{#byteStream}
|	ByteArray <number>							{#byteStreamPut:};

LiteralArray:
												{#stream}
|	LiteralArray ArrayLiteral					{#streamPut:};

ArrayLiteral:
	Literal										{#value:}
|	<name>										{#valueSymbol:}
|	<binarySymbol>								{#valueSymbol:}
|	<keyword>									{#valueSymbol:}
|	<multikeyword>								{#valueSymbol:}
|	<alternateKeyword>							{#valueSymbol:}
|	"(" LiteralArray ")"							{#contents2:}
|	"[" ByteArray "]"							{#contents2:}
|	<anyChar>									{#valueSymbol:};

PragmaMessage:
	Message
|	Apicall;
	
Apicall:
	TypeCall ExternalType <string> "(" ParameterApicall
")" "module:" <string>;
	
TypeCall:
	"apicall:"
|	"cdecl:";
	
ExternalType:
	<name>
|	<name> "*";
	
ParameterApicall:
	ExternalType
|	ParameterApicall ExternalType;

===================================================

Math


	

	
		
___________________________________________________________________________ 
Découvrez un nouveau moyen de poser toutes vos questions quelque soit le sujet ! 
Yahoo! Questions/Réponses pour partager vos connaissances, vos opinions et vos expériences. 
http://fr.answers.yahoo.com 



More information about the Newcompiler mailing list