| -------------------------------------------------------------------------------- |
| -- 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 |