version 1.17, 2012/05/28 14:15:04
|
version 1.20, 2012/06/23 23:20:23
|
Line 1
|
Line 1
|
\ recognizer-based interpreter 05oct2011py |
\ recognizer-based interpreter 05oct2011py |
|
|
|
\ Copyright (C) 2012 Free Software Foundation, Inc. |
|
|
|
\ This file is part of Gforth. |
|
|
|
\ Gforth is free software; you can redistribute it and/or |
|
\ modify it under the terms of the GNU General Public License |
|
\ as published by the Free Software Foundation, either version 3 |
|
\ of the License, or (at your option) any later version. |
|
|
|
\ This program is distributed in the hope that it will be useful, |
|
\ but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
\ GNU General Public License for more details. |
|
|
|
\ You should have received a copy of the GNU General Public License |
|
\ along with this program. If not, see http://www.gnu.org/licenses/. |
|
|
\ Recognizer are words that take a string and try to figure out |
\ Recognizer are words that take a string and try to figure out |
\ what to do with it. I want to separate the parse action from |
\ what to do with it. I want to separate the parse action from |
\ the interpret/compile/postpone action, so that recognizers |
\ the interpret/compile/postpone action, so that recognizers |
Line 25
|
Line 42
|
|
|
: lit, ( n -- ) postpone Literal ; |
: lit, ( n -- ) postpone Literal ; |
: nt, ( nt -- ) name>comp execute ; |
: nt, ( nt -- ) name>comp execute ; |
: nt-ex ( nt -- ) r> >l name>int execute @local0 >r lp+ ; |
: nt-ex ( nt -- ) |
|
[ cell 1 floats - dup [IF] ] lp+!# [ dup , [THEN] drop ] |
|
r> >l name>int execute @local0 >r lp+ ; |
|
|
' nt-ex |
' nt-ex |
' nt, |
' nt, |
Line 112 Variable forth-recognizer
|
Line 131 Variable forth-recognizer
|
|
|
: postpone ( "name" -- ) \ core |
: postpone ( "name" -- ) \ core |
\g Compiles the compilation semantics of @i{name}. |
\g Compiles the compilation semantics of @i{name}. |
parse-name forth-recognizer do-recognizer >postpone ; immediate |
parse-name forth-recognizer do-recognizer >postpone |
|
; immediate restrict |
|
|