[svn:parrot] r46023 - trunk/examples/languages/squaak/src/parser

bacek at svn.parrot.org bacek at svn.parrot.org
Mon Apr 26 07:24:14 UTC 2010


Author: bacek
Date: Mon Apr 26 07:24:13 2010
New Revision: 46023
URL: https://trac.parrot.org/parrot/changeset/46023

Log:
Remove erroneously added file. fperrad++, bacek--.

Deleted:
   trunk/examples/languages/squaak/src/parser/grammar.pm

Deleted: trunk/examples/languages/squaak/src/parser/grammar.pm
==============================================================================
--- trunk/examples/languages/squaak/src/parser/grammar.pm	Mon Apr 26 07:24:13 2010	(r46022)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,235 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-
-=begin overview
-
-This is the grammar for Squaak written as a sequence of Perl 6 rules.
-
-=end overview
-
-grammar Squaak::Grammar is PCT::Grammar;
-
-rule TOP {
-    {*}                                      #= open
-    <stat_or_def>*
-    [ $ || <.panic: 'Syntax error'> ]
-    {*}                                      #= close
-}
-
-rule stat_or_def {
-    | <statement> {*}                        #= statement
-    | <sub_definition> {*}                   #= sub_definition
-}
-
-rule statement {
-    | <if_statement> {*}                     #= if_statement
-    | <while_statement> {*}                  #= while_statement
-    | <for_statement> {*}                    #= for_statement
-    | <try_statement> {*}                    #= try_statement
-    | <throw_statement> {*}                  #= throw_statement
-    | <return_statement> {*}                 #= return_statement
-    | <sub_call> {*}                         #= sub_call
-    | <assignment> {*}                       #= assignment
-    | <variable_declaration> {*}             #= variable_declaration
-    | <do_block> {*}                         #= do_block
-}
-
-rule if_statement {
-    'if' <expression> 'then' <block> ['else' <else=block>]? 'end'
-    {*}
-}
-
-rule while_statement {
-    'while' <expression> 'do' <block> 'end'
-    {*}
-}
-
-rule for_statement {
-    'for' <for_init> ',' <expression> [',' <step=expression>]? 'do'
-    <statement>*
-    'end'
-    {*}
-}
-
-rule for_init {
-    'var' <identifier> '=' <expression>
-    {*}
-}
-
-rule try_statement {
-    'try' <try=block> 'catch' <exception> <catch=block> 'end'
-    {*}
-}
-
-rule exception {
-    <identifier>
-    {*}
-}
-
-rule throw_statement {
-    'throw' <expression>
-    {*}
-}
-
-rule return_statement {
-    'return' <expression>
-    {*}
-}
-
-rule block {
-    {*}                                #= open
-    <statement>*
-    {*}                                #= close
-}
-
-rule do_block {
-    'do' <block> 'end'
-    {*}
-}
-
-rule assignment {
-    <primary> '=' <expression>
-    {*}
-}
-
-rule sub_definition {
-    'sub' <identifier> <parameters>
-    <statement>*
-    'end'
-    {*}
-}
-
-rule parameters {
-    '(' [ <identifier> [',' <identifier>]* ]? ')'
-    {*}
-}
-
-rule variable_declaration {
-    'var' <identifier> ['=' <expression>]?
-    {*}
-}
-
-rule sub_call {
-    <primary> <arguments>
-    {*}
-}
-
-rule arguments {
-    '(' [ <expression> [',' <expression>]* ]? ')'
-    {*}
-}
-
-rule primary {
-    <identifier> <postfix_expression>*
-    {*}
-}
-
-rule postfix_expression {
-    | <key> {*}                      #= key
-    | <member> {*}                   #= member
-    | <index> {*}                    #= index
-}
-
-rule key {
-    '{' <expression> '}'
-    {*}
-}
-
-rule member {
-    '.' <identifier>
-    {*}
-}
-
-rule index {
-    '[' <expression> ']'
-    {*}
-}
-
-rule term {
-   | <float_constant> {*}            #= float_constant
-   | <integer_constant> {*}          #= integer_constant
-   | <string_constant> {*}           #= string_constant
-   | <hash_constructor> {*}          #= hash_constructor
-   | <array_constructor> {*}         #= array_constructor
-   | <sub_call> {*}                  #= sub_call
-   | <primary> {*}                   #= primary
-   | '(' <expression> ')' {*}        #= expression
-}
-
-rule hash_constructor {
-    '{' [ <named_field> [',' <named_field>]* ]? '}'
-    {*}
-}
-
-rule named_field {
-    <string_constant> '=>' <expression>
-    {*}
-}
-
-rule array_constructor {
-    '[' [ <expression> [',' <expression>]* ]? ']'
-    {*}
-}
-
-token identifier {
-    <!keyword> <ident>
-    {*}
-}
-
-token integer_constant {
-    \d+
-    {*}
-}
-
-token float_constant {
-    [
-    | \d+ '.' \d*
-    | \d* '.' \d+
-    ]
-    {*}
-}
-
-token string_constant {
-    \" <string_literal: '"'> \"
-    {*}
-}
-
-token keyword {
-    ['and'|'catch' |'do' |'else' |'end' |'for'|'if'   |'not'
-    |'or' |'return'|'sub'|'throw'|'try' |'var'|'while']>>
-}
-
-rule expression is optable { ... }
-
-proto 'infix:or'       is precedence('1')     is pasttype('unless') { ... }
-proto 'infix:and'      is tighter('infix:or') is pasttype('if')     { ... }
-
-proto 'infix:<'        is tighter('infix:and')                      { ... }
-proto 'infix:<='       is equiv('infix:<')                          { ... }
-proto 'infix:>'        is equiv('infix:<')                          { ... }
-proto 'infix:>='       is equiv('infix:<')                          { ... }
-proto 'infix:=='       is equiv('infix:<')                          { ... }
-proto 'infix:!='       is equiv('infix:<')                          { ... }
-
-proto 'infix:+'        is tighter('infix:<')  is pirop('add')     { ... }
-proto 'infix:-'        is equiv('infix:+')    is pirop('sub')     { ... }
-
-proto 'infix:..'       is equiv('infix:+')    is pirop('concat')  { ... }
-
-proto 'infix:*'        is tighter('infix:+')  is pirop('mul')     { ... }
-proto 'infix:%'        is equiv('infix:*')    is pirop('mod')     { ... }
-proto 'infix:/'        is equiv('infix:*')    is pirop('div')     { ... }
-
-proto 'prefix:not'     is tighter('infix:*')    is pirop('not')   { ... }
-proto 'prefix:-'       is tighter('prefix:not') is pirop('neg')   { ... }
-
-proto 'term:'          is tighter('prefix:-')  is parsed(&term)      { ... }
-
-
-##  this <ws> rule treats # as "comment to eol"
-##  you may want to replace it with something appropriate
-token ws {
-    <!ww>
-    [ '#' \N* \n? | \s+ ]*
-}


More information about the parrot-commits mailing list