标签: porting

ANTLR4语法中的集合当前不支持规则引用

我正在尝试将Chris Lambro的ANTLR3Javascript语法移植到ANTLR4

我收到以下错误,

集合中当前不支持规则引用"LT"

在以下代码中 ~(LT)*

LineComment
    : '//'  ~(LT)* -> skip
    ;

LT  : '\n'      // Line feed.
    | '\r'      // Carriage return.
    | '\u2028'  // Line separator.
    | '\u2029'  // Paragraph separator.
    ;
Run Code Online (Sandbox Code Playgroud)

我需要帮助理解为什么我会收到此错误,以及如何解决它.

porting antlr3 antlr4

9
推荐指数
1
解决办法
2688
查看次数

如何在OS X上取消设置env变量?

我正在研究一个makefile规则,并希望在递归调用make之前取消设置环境变量MAKEFILES.在其他BSD系统上,我这样做:

env -u MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
Run Code Online (Sandbox Code Playgroud)

在Linux上,我这样做:

env --unset=MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
Run Code Online (Sandbox Code Playgroud)

但是,这两种风格都不适用于Macintosh OS X Mavericks,不过,我希望其他地方使用的BSD风格也可以.

我通过BSD样式调用得到的错误是:

env: illegal option -- u
Run Code Online (Sandbox Code Playgroud)

如何在OS X上调用命令之前取消设置环境变量,为什么其他地方使用的BSD样式不起作用?

这是Mac的env手册页:

ENV(1)                    BSD General Commands Manual                   ENV(1)

NAME
     env -- set and print environment

SYNOPSIS
     env [-i] [name=value ...] [utility [argument ...]]

DESCRIPTION
     env executes utility after modifying the environment as specified on the command line.  The option name=value specifies an environmental variable, name, with a value of value.  The option `-i' causes env to completely ignore …
Run Code Online (Sandbox Code Playgroud)

macos porting environment-variables

9
推荐指数
1
解决办法
6779
查看次数

如何在OS X上从std :: basic_ios获取文件描述符for clang?

我将一些代码移植到Darwin OS X,作为更改的一部分,我们从gcc转到clang编译器.

在代码中,有一个功能可追溯到2005年,并在互联网上发布了几个地方.它为几个不同的旧版GCC提供了功能,我已经删除了它提供的最后一个版本,v3.4.0或更高版本.代码取决于两个GCC特定类:__gnu_cxx::stdio_filebuf__gnu_cxx::stdio_sync_filebuf.

//! Similar to fileno(3), but taking a C++ stream as argument instead of a
//! FILE*.  Note that there is no way for the library to track what you do with
//! the descriptor, so be careful.
//! \return  The integer file descriptor associated with the stream, or -1 if
//!   that stream is invalid.  In the latter case, for the sake of keeping the
//!   code as similar to fileno(3), errno …
Run Code Online (Sandbox Code Playgroud)

c++ macos porting iostream file-descriptor

9
推荐指数
1
解决办法
1028
查看次数

什么是摆脱"警告C4267可能丢失数据"的最佳策略?

我将一些遗留代码从win32移植到win64.不是因为Win32对象的大小是为我们的需求太少,而是因为Win64的是现在比较标准,我们希望端口的所有我们的环境,以这种格式(和我们也使用一些第三方库提供的64位比32位更好的性能) .

我们最终得到了大量的;

警告C4267:'参数':从'size_t'转换为'...',可能会丢失数据

主要是由于代码如下:unsigned int size = v.size();哪里v是STL容器.

我知道为什么警告有意义,我知道它为什么发布以及如何解决.但是,在这个具体的例子中,我们从未经历过容器大小unsigned int过去超过最大值的情况....所以当代码移植到64位环境时,没有理由出现这个问题.

我们讨论了什么是最好的策略来压制那些嘈杂的警告(他们可能会隐藏我们将会遗漏的相关警告),但我们无法对适当的策略做出决定.

所以我在这里问这个问题,最佳推荐策略是什么?

1.使用 static_cast

用一个static_cast.做unsigned int size = static_cast<unsigned int>(v.size());.我并不"喜欢",因为我们放弃了64位容量来在容器中存储大量数据.但由于我们的代码从未达到32位限制,所以这似乎是一个安全的解决方案......

2.替换unsigned intsize_t

这肯定更难,因为unsigned int size上面示例中的对象可以被设置为其他函数,保存为类属性,然后删除单行警告可能最终导致数百个代码更改...

3.禁用警告

这很可能是一个非常糟糕的主意,因为在这种情况下uint8_t size = v.size()它也会禁用警告,这肯定会导致数据丢失....

4.定义"安全演员"*功能并使用它

像这样的东西:

template <typename From, typename To> To safe_cast( const From& value )
{
    //assert( value < std::numeric_limits<To>::max() && value > std::numeric_limits<To>::min() );
    // Edit 19/05: test above fails in some …
Run Code Online (Sandbox Code Playgroud)

c++ windows porting casting suppress-warnings

9
推荐指数
1
解决办法
2867
查看次数

将 jsx 转换为 tsx?

我有一个定义了 proptypes 的 React 组件库,我正在考虑切换到 Typescript。是否有任何工具可以帮助移植代码?这是一个简单组件的示例道具集:

  static propTypes = {
    active: PropTypes.bool,
    children: PropTypes.node,
    disabled: PropTypes.bool,
    icon: Icon.propTypes.kind,
    tabIndex: PropTypes.number
  };
Run Code Online (Sandbox Code Playgroud)

我正在想象一个工具可以将其转换为以下内容:

  static propTypes = {
    active: PropTypes.bool,
    children: PropTypes.node,
    disabled: PropTypes.bool,
    icon: Icon.propTypes.kind,
    tabIndex: PropTypes.number
  };
Run Code Online (Sandbox Code Playgroud)

写起来并不难,但如果它已经存在就好了。

javascript porting transformation typescript reactjs

9
推荐指数
2
解决办法
2万
查看次数

将Java代码移植到ObjC时,如何最好地表示已检查的异常?

我工作的一个移植代码库的Java可可/ Objective-C的用于台式机Mac OS X的Java代码中使用了大量的大量的与像checked异常的方法:

double asNumber() throws FooException {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在Objective-C中表示这些的最佳方法是什么?例外或错误输出参数?

- (CGFloat)asNumber { 
    ... // possibly [FooException raise:format:];
}
Run Code Online (Sandbox Code Playgroud)

要么

- (CGFloat)asNumberError:(NSError **)outError {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我觉得out-errors通常是Objective-C的更好解决方案,但正如你所看到的......很多像上面那样的方法看起来很尴尬.而且,还有很多这些.

当然要记住,由于这些是Java 中的检查异常,我需要在调用这些方法的地方添加@try块或if (*outError) {...}检查(很多地方).

我记得听说虽然@try在Objective-C中输入块曾经是昂贵的,但它在64位或SL或其他一些新的环境中是便宜的(不记得确切).我完全不关心向后兼容性,所以我绝对愿意只为新的热度而设计.

java macos cocoa porting objective-c

8
推荐指数
2
解决办法
1315
查看次数

将Java类和方法移植到Android.(TextLayout,Font,Graphics2D等)

我一直在玩Android并尝试移植Java应用程序.以下是关于我遇到的问题的一些问题,并希望得到一些指导.

这是一个相当大的问题(多个问题).但是,我不是盲目地问他们,因为我已经研究了我能做些什么,并试图让我理解使用它.我花时间提出问题,希望他们对我想要实现的目标有一半的了解.

我将提供一半的代表作为赏金,因为我希望得到彻底的答案和帮助,希望它足以吸引一些人帮助.

提前,谢谢你的时间和帮助!(期待阅读回复).

TextLayout && Font && Graphics2D

有问题的是以下类和方法:

  • TextLayout
  • TextLayout.getAdvance()
  • TextLayout.getAscent()
  • TextLayout.draw()
  • Graphics2D.getFontRenderContext()

我不太确定TextLayoutAndroid中的等价物.我曾经读过有些人会TextView使用它,但我不确定是否会这样做

为以下工作.我会提供一些我想做的事情的来源,或许可以帮助我.

Java来源:

private Font myStringFont = new Font("Helvetica", Font.BOLD, 12);
private String myString = "My Test String";
private int midX = getWidth() / 2;
private int midY = getHeight() / 2;
Graphics2D g2 = new Graphics2d();

TextLayout layout = new TextLayout(myString, font, g2.getFontRenderContext());
g2.drawString(myString, midX - ((int)layout.getAdvance() /2), midY);
Run Code Online (Sandbox Code Playgroud)

Android复制尝试:

Canvas canvas;
Paint paint;
private String myString = "My Test …
Run Code Online (Sandbox Code Playgroud)

java android text porting graphics2d

8
推荐指数
1
解决办法
2584
查看次数

如何将Android应用程序移植到黑莓手机上

大家好我为ios和android sdk开发应用程序.有任何教程解释如何将现有的Android应用程序移植到黑莓手机并在黑莓市场上发布.就黑莓而言,我毫不知道.我看到最近的一个视频RIM在黑莓手册上播放Android应用程序..如果有可能在黑莓手册中移植Android应用程序.该移植只能缩小到黑莓手册或所有其他黑莓产品.

android porting blackberry

8
推荐指数
1
解决办法
2252
查看次数

什么是Unix函数gmtime_r的Windows等价物?

我正在将一些Unix代码移植到Windows Visual Studio 2010中.我遇到了以下问题

gmtime_r(&now, &tm_time);
Run Code Online (Sandbox Code Playgroud)

我发现gmtime_r()是一个标准的Unix函数,但我希望找到与Windows等价的函数.我在time.h中发现了很多gmtime函数,但是我很难找到哪一个是等价的,如果它存在的话.有人能指出我正确的方向吗?

c++ unix time porting visual-studio-2010

8
推荐指数
1
解决办法
4754
查看次数

arguments.callee的替代方案

我有一个EventListener,它监听整个文档并记录击键,但是我想在满足某些条件时删除这个监听器.

以下是我的代码片段:

document.addEventListener('keyup', function(e) {
    var letter_entered = String.fromCharCode(e.keyCode).toLowerCase();
    player.makeGuess(letter_entered);

    if(player.win_status === true || player.lose_status === true) {
        document.removeEventListener('keyup', arguments.callee, false);
    }
});
Run Code Online (Sandbox Code Playgroud)

这是有效的,但根据Mozilla Developer Docs,此方法已被弃用.

我知道我可以简单地命名这个函数,但有没有替代方法可以让我继续使用未命名的函数

javascript reflection porting arguments deprecated

8
推荐指数
2
解决办法
7554
查看次数