blob: 4f791b12bda2572ef3370a240f9bf4602dc2e415 [file] [log] [blame]
--------------------------------------------------------------------------------
-- Copyright (c) 2013 Sierra Wireless.
-- All rights reserved. This program and the accompanying materials
-- are made available under the terms of the Eclipse Public License v1.0
-- which accompanies this distribution, and is available at
-- http://www.eclipse.org/legal/epl-v10.html
--
-- Contributors:
-- - initial API and implementation and initial documentation
--------------------------------------------------------------------------------
local javainternalmodelfactory = require 'javainternalmodelfactory'
local J = {}
--------------------------------------
-- create expression java object
function J._expression(_expr,handledexpr)
-- search if already handled
if handledexpr and handledexpr[_expr] then return handledexpr[_expr] end
-- else handle it
local tag = _expr.tag
if tag == "MIdentifier" then
return J._identifier(_expr,handledexpr)
elseif tag == "MIndex" then
return J._index(_expr,handledexpr)
elseif tag == "MCall" then
return J._call(_expr,handledexpr)
elseif tag == "MInvoke" then
return J._invoke(_expr,handledexpr)
end
return nil
end
--------------------------------------
-- create identifier java object
function J._identifier(_identifier,handledexpr)
local jidentifier = javainternalmodelfactory.newidentifier(
_identifier.sourcerange.min - 1,
_identifier.sourcerange.max
)
handledexpr[_identifier] =jidentifier
return jidentifier
end
--------------------------------------
-- create index java object
function J._index(_index,handledexpr)
local jindex = javainternalmodelfactory.newindex(
_index.sourcerange.min -1,
_index.sourcerange.max,
J._expression(_index.left,handledexpr),
_index.right
)
handledexpr[_index] =jindex
return jindex
end
--------------------------------------
-- create call java object
function J._call(_call,handledexpr)
local jcall = javainternalmodelfactory.newcall(
_call.sourcerange.min - 1,
_call.sourcerange.max,
J._expression(_call.func,handledexpr)
)
handledexpr[_call] =jcall
return jcall
end
--------------------------------------
-- create invoke java object
function J._invoke(_invoke,handledexpr)
local jinvoke = javainternalmodelfactory.newinvoke(
_invoke.sourcerange.min - 1,
_invoke.sourcerange.max,
_invoke.functionname,
J._expression(_invoke.record,handledexpr)
)
handledexpr[_invoke] =jinvoke
return jinvoke
end
return J