Patch title: Release 85 bulk changes
Abstract:
File: /pliant/language/parser/position.pli
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


function parse_at context line parameter
  arg_rw ParserContext context ; arg Str line ; arg Address 
  if line:len=0 or line:0:number<>0
    return
  var Str filename ; var Int y x right
  if { right := 0 ; (line parse "[0]left_zero_is_at" "[dq]" 
    var Int size := ((line 1 line:len) search "[0]" -1)+2
    context filename := filename
    context delta_y := (y-1)-context:y
    context delta_x := (x-1)-(context:x+(size-1)*right)
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


function parse_at context line parameter
  arg_rw ParserContext context ; arg Str line ; arg Address 
  if line:len=0 or line:0:number<>0
    return
  var Str filename ; var Int y x right
  if { right := 0 ; (line parse "[0]left_zero_is_at" "[dq]" 
    var Int size := ((line 1 line:len) search "[0]" -1)+2
    context filename := filename
    context delta_y := (y-1)-context:y
    context delta_x := (x-1)-(context:x+(size-1)*right)
    var Link:TagMarker tm :> new TagMarker
    context add_token addressof:tm
    context forward size

gvar ParserFilter at_filter
at_filter function :> the_function parse_at ParserContext St
constant 'pliant parser basic types' at_filter
export 'pliant parser basic types'
    context forward size

gvar ParserFilter at_filter
at_filter function :> the_function parse_at ParserContext St
constant 'pliant parser basic types' at_filter
export 'pliant parser basic types'