Author: bernhard
Date: Wed Feb 1 02:39:56 2006
New Revision: 11395
Added:
trunk/languages/bc/grammar/antlr_3/antlr_past2pir_past.g
- copied, changed from r11392,
trunk/languages/bc/grammar/antlr_2/antlr_past2pir_past.g
Modified:
trunk/MANIFEST
trunk/MANIFEST.SKIP
trunk/languages/bc/config/makefiles/root.in
trunk/languages/bc/docs/antlr_3.pod
trunk/languages/bc/grammar/antlr_3/ (props changed)
trunk/languages/bc/grammar/antlr_3/bc.g
Log:
Parrot bc: Add a dummy ANTLR3 tree grammar that should generate
Allison's PAST from an ANTLR3 AST.
Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST (original)
+++ trunk/MANIFEST Wed Feb 1 02:39:56 2006
@@ -746,6 +746,7 @@ languages/bc/docs/antlr_3.pod
languages/bc/docs/parrot_bc.pod
[bc]
languages/bc/grammar/antlr_2/antlr_past2pir_past.g
[bc]
languages/bc/grammar/antlr_2/bc_python.g
[bc]
+languages/bc/grammar/antlr_3/antlr_past2pir_past.g
[bc]
languages/bc/grammar/antlr_3/bc.g
[bc]
languages/bc/lib/Parrot/Test/Bc.pm
[bc]
languages/bc/lib/Parrot/Test/Bc/Antlr2.pm
[bc]
Modified: trunk/MANIFEST.SKIP
==============================================================================
--- trunk/MANIFEST.SKIP (original)
+++ trunk/MANIFEST.SKIP Wed Feb 1 02:39:56 2006
@@ -1,5 +1,5 @@
# $Id$
-# generated by tools/dev/gen_manifest_skip.pl Mon Jan 30 22:26:26 2006
+# generated by tools/dev/gen_manifest_skip.pl Wed Feb 1 11:25:50 2006
#
# This file should contain a transcript of the svn:ignore properties
# of the directories in the Parrot subversion repository. (Needed for
@@ -205,126 +205,6 @@
^docs/packfile-perl\.pod$
^docs/packfile-perl\.pod/
# generated from svn:ignore of 'docs/dev/'
-# generated from svn:ignore of 'docs/html/'
-# generated from svn:ignore of 'docs/html/config/auto/'
-# generated from svn:ignore of 'docs/html/config/gen/'
-# generated from svn:ignore of 'docs/html/config/gen/cpu/i386/'
-# generated from svn:ignore of 'docs/html/config/gen/cpu/x86_64/'
-# generated from svn:ignore of 'docs/html/config/init/'
-# generated from svn:ignore of 'docs/html/config/inter/'
-# generated from svn:ignore of 'docs/html/docs/'
-# generated from svn:ignore of 'docs/html/docs/dev/'
-# generated from svn:ignore of 'docs/html/docs/imcc/'
-# generated from svn:ignore of 'docs/html/docs/ops/'
-# generated from svn:ignore of 'docs/html/docs/pdds/'
-# generated from svn:ignore of 'docs/html/docs/pdds/clip/'
-# generated from svn:ignore of 'docs/html/docs/pmc/'
-# generated from svn:ignore of 'docs/html/editor/'
-# generated from svn:ignore of 'docs/html/examples/benchmarks/'
-# generated from svn:ignore of 'docs/html/examples/c/'
-# generated from svn:ignore of 'docs/html/examples/io/'
-# generated from svn:ignore of 'docs/html/examples/library/'
-# generated from svn:ignore of 'docs/html/examples/mops/'
-# generated from svn:ignore of 'docs/html/examples/nci/'
-# generated from svn:ignore of 'docs/html/examples/pasm/'
-# generated from svn:ignore of 'docs/html/examples/pir/'
-# generated from svn:ignore of 'docs/html/examples/streams/'
-# generated from svn:ignore of 'docs/html/examples/subs/'
-# generated from svn:ignore of 'docs/html/languages/'
-# generated from svn:ignore of 'docs/html/languages/BASIC/compiler/'
-# generated from svn:ignore of 'docs/html/languages/bc/lib/Parrot/Test/'
-# generated from svn:ignore of 'docs/html/languages/bc/t/'
-# generated from svn:ignore of 'docs/html/languages/befunge/t/'
-# generated from svn:ignore of 'docs/html/languages/bf/t/'
-# generated from svn:ignore of 'docs/html/languages/conversion/examples/'
-# generated from svn:ignore of 'docs/html/languages/forth/'
-# generated from svn:ignore of 'docs/html/languages/jako/docs/'
-# generated from svn:ignore of 'docs/html/languages/jako/lib/Jako/Construct/'
-# generated from svn:ignore of 'docs/html/languages/jako/t/'
-# generated from svn:ignore of 'docs/html/languages/lua/'
-# generated from svn:ignore of 'docs/html/languages/lua/doc/'
-# generated from svn:ignore of 'docs/html/languages/lua/lib/'
-# generated from svn:ignore of 'docs/html/languages/lua/pmc/'
-# generated from svn:ignore of 'docs/html/languages/lua/t/'
-# generated from svn:ignore of 'docs/html/languages/lua/t/Parrot/Test/'
-# generated from svn:ignore of 'docs/html/languages/lua/t/lib/'
-# generated from svn:ignore of 'docs/html/languages/lua/t/pmc/'
-# generated from svn:ignore of 'docs/html/languages/m4/'
-# generated from svn:ignore of 'docs/html/languages/m4/doc/'
-# generated from svn:ignore of 'docs/html/languages/m4/examples/'
-# generated from svn:ignore of 'docs/html/languages/m4/lib/Parrot/Test/'
-# generated from svn:ignore of 'docs/html/languages/m4/src/'
-# generated from svn:ignore of 'docs/html/languages/m4/t/'
-# generated from svn:ignore of 'docs/html/languages/m4/t/regex/'
-# generated from svn:ignore of 'docs/html/languages/m4/tools/'
-# generated from svn:ignore of 'docs/html/languages/miniperl/Miniperl/'
-# generated from svn:ignore of 'docs/html/languages/ook/'
-# generated from svn:ignore of 'docs/html/languages/ook/t/'
-# generated from svn:ignore of
'docs/html/languages/parrot_compiler/lib/Parrot/Test/'
-# generated from svn:ignore of 'docs/html/languages/parrot_compiler/t/'
-# generated from svn:ignore of 'docs/html/languages/python/pmc/'
-# generated from svn:ignore of 'docs/html/languages/python/t/'
-# generated from svn:ignore of 'docs/html/languages/python/t/pmc/'
-# generated from svn:ignore of 'docs/html/languages/regex/docs/'
-# generated from svn:ignore of 'docs/html/languages/regex/lib/Parrot/Test/'
-# generated from svn:ignore of 'docs/html/languages/regex/lib/Regex/'
-# generated from svn:ignore of 'docs/html/languages/regex/lib/Regex/Parse/'
-# generated from svn:ignore of 'docs/html/languages/regex/t/'
-# generated from svn:ignore of 'docs/html/languages/ruby/Yacc/'
-# generated from svn:ignore of 'docs/html/languages/scheme/'
-# generated from svn:ignore of 'docs/html/languages/scheme/Scheme/'
-# generated from svn:ignore of 'docs/html/languages/scheme/t/'
-# generated from svn:ignore of 'docs/html/languages/tcl/'
-# generated from svn:ignore of 'docs/html/languages/tcl/classes/'
-# generated from svn:ignore of 'docs/html/languages/tcl/docs/'
-# generated from svn:ignore of 'docs/html/languages/tcl/lib/'
-# generated from svn:ignore of 'docs/html/languages/tcl/lib/commands/'
-# generated from svn:ignore of 'docs/html/languages/tcl/t/'
-# generated from svn:ignore of 'docs/html/languages/tcl/t/Parrot/Test/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/Configure/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/Configure/Step/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/Docs/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/Docs/Section/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/IO/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/OpLib/'
-# generated from svn:ignore of 'docs/html/lib/Parrot/OpTrans/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/include/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/Data/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/Data/Dumper/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/Digest/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/File/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/File/Spec/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/Getopt/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/JSON/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/PGE/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/SDL/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/Stream/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/Test/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/Test/Builder/'
-# generated from svn:ignore of 'docs/html/runtime/parrot/library/YAML/Parser/'
-# generated from svn:ignore of 'docs/html/src/'
-# generated from svn:ignore of 'docs/html/src/dynoplibs/'
-# generated from svn:ignore of 'docs/html/src/dynpmc/'
-# generated from svn:ignore of 'docs/html/src/encodings/'
-# generated from svn:ignore of 'docs/html/src/io/'
-# generated from svn:ignore of 'docs/html/src/ops/'
-# generated from svn:ignore of 'docs/html/src/packfile/'
-# generated from svn:ignore of 'docs/html/src/pmc/'
-# generated from svn:ignore of 'docs/html/t/'
-# generated from svn:ignore of 'docs/html/t/compilers/imcc/syn/'
-# generated from svn:ignore of 'docs/html/t/examples/'
-# generated from svn:ignore of 'docs/html/t/library/'
-# generated from svn:ignore of 'docs/html/t/native_pbc/'
-# generated from svn:ignore of 'docs/html/t/op/'
-# generated from svn:ignore of 'docs/html/t/pmc/'
-# generated from svn:ignore of 'docs/html/t/src/'
-# generated from svn:ignore of 'docs/html/t/stress/'
-# generated from svn:ignore of 'docs/html/tools/build/'
-# generated from svn:ignore of 'docs/html/tools/dev/'
-# generated from svn:ignore of 'docs/html/tools/docs/'
-# generated from svn:ignore of 'docs/html/tools/util/'
# generated from svn:ignore of 'docs/imcc/'
# generated from svn:ignore of 'docs/ops/'
^docs/ops/.*\.pod$
@@ -474,6 +354,8 @@
^languages/bc/grammar/antlr_3/.*\.java/
^languages/bc/grammar/antlr_3/.*\.class$
^languages/bc/grammar/antlr_3/.*\.class/
+^languages/bc/grammar/antlr_3/AntlrPast2PirPast\.tokens$
+^languages/bc/grammar/antlr_3/AntlrPast2PirPast\.tokens/
^languages/bc/grammar/antlr_3/BcParser\.lexer\.g$
^languages/bc/grammar/antlr_3/BcParser\.lexer\.g/
^languages/bc/grammar/antlr_3/BcParser\.tokens$
Modified: trunk/languages/bc/config/makefiles/root.in
==============================================================================
--- trunk/languages/bc/config/makefiles/root.in (original)
+++ trunk/languages/bc/config/makefiles/root.in Wed Feb 1 02:39:56 2006
@@ -79,6 +79,7 @@ maintain-python: $(PYTHON_RUNTIME_FILES)
maintain-java: grammar/antlr_3/bc.g
@echo 'Be sure to set CLASSPATH first'
java org.antlr.Tool grammar/antlr_3/bc.g
+ java org.antlr.Tool grammar/antlr_3/antlr_past2pir_past.g
javac grammar/antlr_3/*.java
# BcLexer.py will be created too
Modified: trunk/languages/bc/docs/antlr_3.pod
==============================================================================
--- trunk/languages/bc/docs/antlr_3.pod (original)
+++ trunk/languages/bc/docs/antlr_3.pod Wed Feb 1 02:39:56 2006
@@ -8,6 +8,8 @@ These are some rumblings on using ANTLR
=head1 ANTLR 3
+See http://www.antlr.org/v3/index.html.
+
=head2 Running
export
CLASSPATH=/home/bernhard/devel/ANTLR/v3/antlr-3.0ea7/lib/antlr-3.0ea7.jar:/home/bernhard/devel/ANTLR/v3/antlr-3.0ea7/lib/antlr-2.7.5.jar:/home/bernhard/devel/ANTLR/v3/antlr-3.0ea7/lib/stringtemplate-2.3b4.jar:$CLASSPATH
@@ -17,7 +19,7 @@ And see Makefile.
=head2 Syntax
Lexer, Parser and TreeParser are in the same file, speak grammar.
-C-comments serve as comments. C++ style as well ?
+C and C++ style comments are accepted.
'+' is one or many
Copied: trunk/languages/bc/grammar/antlr_3/antlr_past2pir_past.g (from r11392,
trunk/languages/bc/grammar/antlr_2/antlr_past2pir_past.g)
==============================================================================
--- trunk/languages/bc/grammar/antlr_2/antlr_past2pir_past.g (original)
+++ trunk/languages/bc/grammar/antlr_3/antlr_past2pir_past.g Wed Feb 1
02:39:56 2006
@@ -1,47 +1,39 @@
-// Copyright: 2005 The Perl Foundation. All Rights Reserved.
+// Copyright: 2006 The Perl Foundation. All Rights Reserved.
// $Id$
-header "AntlrPast2PirPastTreeWalker.__init__"
-{
- self.reg = 10; // counter for unlimited number of PMC registers
-}
+// header "AntlrPast2PirPastTreeWalker.__init__"
+// {
+ // self.reg = 10; // counter for unlimited number of PMC registers
+// }
//-----------------------------------------------------------------------------
// Options for ANTLR
//-----------------------------------------------------------------------------
-options
-{
- language = "Python"; // generate Lexer, Parser and TreeParser in Python
-}
+// options
+// {
+ // language = "Python"; // generate Lexer, Parser and TreeParser in
Python
+// }
//----------------------------------------------------------------------------
// Transform ANTLR PAST to PIR that sets up PAST
//----------------------------------------------------------------------------
-class AntlrPast2PirPastTreeWalker extends TreeParser;
+tree grammar AntlrPast2PirPast;
options
{
- buildAST = true; // transform AST
- importVocab = BcLexer; // Vocabulary that contains only the PAST nodes
+ ASTLabelType=CommonTree;
+ tokenVocab='grammar/antlr_3/BcParser';
}
-//tokens
-//{
- // These tokens are not in the parse tree.
- // They make up an AST that is equivalent to the PAST data structure.
- // PAST_Stmts;
- // PAST_Stmt;
- // PAST_Exp;
- // PAST_Op;
- // PAST_Val_Strqq;
- // PAST_Val_Num;
-//}
-
-gen_pir_past!
- : #(PAST_Stmts PEPN:code_blocks )
+gen_pir_past
+ : ^(PROGRAM INT)
{
- pir_before = """
+ System.out.println(" OK in antlr_past2pir_past");
+ }
+ ;
+/*
+pir_before = """
.local pmc stmts_children
stmts_children = new PerlArray
#"""
@@ -54,154 +46,4 @@ stmts.set_node('1', 1, stmts_children)
#"""
#gen_pir_past = #( [ PIR_OP, pir_before ], #PEPN, [PIR_OP, pir_after] );
- }
- ;
-
-code_blocks
- : ( #( PAST_Code stmt stmt ) )+
- ;
-
-stmt!
- : #( PAST_Stmt reg_E=E:exp )
- {
- reg = self.reg
- self.reg = self.reg + 10;
- pir = """
- $P%d = new 'PAST::Stmt'
- $P%d = new PerlArray
-
- push $P%d, $P%d
- $P%d.set_node('1', 1 ,$P%d)
-
- push stmts_children, $P%d
-#""" % (
- reg,
- reg + 1,
- reg + 1, reg_E,
- reg, reg + 1,
- reg
- )
-
- #stmt = #( [ PIR_NOOP, "noop" ], #E, [PIR_OP, pir] );
- }
- ;
-
-exp! returns[reg]
- : #( PAST_Exp ( reg_O=O:op
- {
- reg = self.reg;
- self.reg = self.reg + 10;
- pir = """
- $P%d = new 'PAST::Exp'
- $P%d = new PerlArray
-
- push $P%d, $P%d
- $P%d.set_node('1', 1, $P%d)
- #""" % (
- reg,
- reg + 1,
-
- reg + 1, reg_O,
- reg, reg + 1
- )
-
- #exp = #( [ PIR_NOOP, "noop" ], #O, [PIR_OP, pir] );
- }
- |
- reg_V_STRQQ=V_STRQQ:val_strqq
- {
- reg = self.reg;
- self.reg = self.reg + 10;
- pir = """
- $P%d = new 'PAST::Exp'
- $P%d = new PerlArray
-
- push $P%d, $P%d
- $P%d.set_node('1', 1, $P%d)
- #""" % (
- reg,
- reg + 1,
-
- reg + 1, reg_V_STRQQ,
- reg, reg + 1
- )
-
- #exp = #( [ PIR_NOOP, "noop" ], #V_STRQQ, [PIR_OP, pir] );
- }
- |
- reg_V_NUM=V_NUM:val_num
- {
- reg = self.reg;
- self.reg = self.reg + 10;
- pir = """
- $P%d = new 'PAST::Exp'
- $P%d = new PerlArray
-
- push $P%d, $P%d
- $P%d.set_node('1', 1, $P%d)
- #""" % (
- reg,
- reg + 1,
-
- reg + 1, reg_V_NUM,
- reg, reg + 1
- )
-
- #exp = #( [ PIR_NOOP, "noop" ], #V_NUM, [PIR_OP, pir] );
- }
- )
- )
- ;
-
-op! returns[reg]
- : #( PAST_Op reg_E=E:exp )
- {
- reg = self.reg;
- self.reg = self.reg + 10;
- pir = """
- $P%d = new 'PAST::Op'
- $P%d = new PerlArray
-
- push $P%d, $P%d
- $P%d.set_node('1', 1, 'print' ,$P%d)
-#""" % (
- reg,
- reg + 1,
-
- reg + 1, reg_E,
- reg, reg + 1
- )
-
- #op = #( [ PIR_NOOP, "noop" ], #E, [PIR_OP, pir] );
- }
- ;
-
-val_strqq! returns[reg]
- : V:PAST_Val_Strqq
- {
- reg = self.reg;
- self.reg = self.reg + 10;
- pir = """
- $P%d = new 'PAST::Val'
- $P%d.set_node( '1', 0, '%s' )
- $P%d.valtype( 'strqq' )
-#""" % ( reg, reg, V.getText(), reg )
-
- #val_strqq = #( [PIR_OP, pir] );
- }
- ;
-
-val_num! returns[reg]
- : V:PAST_Val_Num
- {
- reg = self.reg;
- self.reg = self.reg + 10;
- pir = """
- $P%d = new 'PAST::Val'
- $P%d.set_node( '1', 0, '%s' )
- $P%d.valtype( 'num' )
-#""" % ( reg, reg, V.getText(), reg )
-
- #val_num = #( [PIR_OP, pir] );
- }
- ;
+*/
Modified: trunk/languages/bc/grammar/antlr_3/bc.g
==============================================================================
--- trunk/languages/bc/grammar/antlr_3/bc.g (original)
+++ trunk/languages/bc/grammar/antlr_3/bc.g Wed Feb 1 02:39:56 2006
@@ -9,12 +9,14 @@ options
ASTLabelType=CommonTree;
}
- /* PROGRAM; */
-
+tokens
+{
+ PROGRAM;
+}
program
- : INT WS quit WS
+ : INT WS quit WS -> ^( PROGRAM INT )
;
INT